From a757506f6f2ba73e0eb5c0d5e88060bc45918360 Mon Sep 17 00:00:00 2001 From: Mingyu Kim Date: Wed, 31 May 2023 18:39:19 +0900 Subject: [PATCH] Typo fix (#17723) --- docs/IE_PLUGIN_DG/AsyncInferRequest.md | 2 +- docs/MO_DG/IR_and_opsets.md | 4 ++-- .../prepare_model/Getting_performance_numbers.md | 2 +- .../convert_model/pytorch_specific/Convert_YOLACT.md | 2 +- .../tf_specific/Convert_GNMT_From_Tensorflow.md | 2 +- docs/OV_Runtime_UG/supported_plugins/CPU.md | 2 +- .../supported_plugins/config_properties.md | 2 +- docs/dev/debug_capabilities.md | 2 +- docs/dev/installing.md | 4 ++-- docs/dev/test_coverage.md | 2 +- docs/gapi/gapi_face_analytics_pipeline.md | 4 ++-- docs/glossary.md | 2 +- docs/model_zoo.md | 4 ++-- docs/nbdoc/README.md | 2 +- docs/ops/arithmetic/Add_1.md | 2 +- docs/ops/arithmetic/Atanh_3.md | 4 ++-- docs/ops/arithmetic/Divide_1.md | 2 +- docs/ops/arithmetic/Multiply_1.md | 2 +- docs/ops/arithmetic/Subtract_1.md | 2 +- docs/ops/broadcast_rules.md | 2 +- docs/ops/infrastructure/Assign_3.md | 2 +- docs/ops/infrastructure/ReadValue_3.md | 2 +- docs/ops/matrix/Einsum_7.md | 2 +- docs/ops/movement/ScatterUpdate_3.md | 4 ++-- docs/ops/sequence/CTCLoss_4.md | 2 +- docs/ovsa/ovsa_get_started.md | 12 ++++++------ .../include/select_shape_inference.hpp | 2 +- 27 files changed, 38 insertions(+), 38 deletions(-) diff --git a/docs/IE_PLUGIN_DG/AsyncInferRequest.md b/docs/IE_PLUGIN_DG/AsyncInferRequest.md index 7ee8ea649a7..b6f91f914bc 100644 --- a/docs/IE_PLUGIN_DG/AsyncInferRequest.md +++ b/docs/IE_PLUGIN_DG/AsyncInferRequest.md @@ -33,7 +33,7 @@ AsyncInferRequest() The main goal of the ``AsyncInferRequest`` constructor is to define a device pipeline ``m_pipeline``. The example below demonstrates ``m_pipeline`` creation with the following stages: -* ``infer_preprocess_and_start_pipeline`` is a CPU ligthweight task to submit tasks to a remote device. +* ``infer_preprocess_and_start_pipeline`` is a CPU lightweight task to submit tasks to a remote device. * ``wait_pipeline`` is a CPU non-compute task that waits for a response from a remote device. * ``infer_postprocess`` is a CPU compute task. diff --git a/docs/MO_DG/IR_and_opsets.md b/docs/MO_DG/IR_and_opsets.md index 00cfcd0ee76..05b6b1249aa 100644 --- a/docs/MO_DG/IR_and_opsets.md +++ b/docs/MO_DG/IR_and_opsets.md @@ -19,7 +19,7 @@ Overview of Artificial Neural Networks Representation A deep learning network is usually represented as a directed graph describing the flow of data from the network input data to the inference results. Input data can be in the form of images, video, text, audio, or preprocessed information representing objects from the target area of interest. -Here is an illustration sof a small graph representing a model that consists of a single Convolutional layer and activation function: +Here is an illustration of a small graph representing a model that consists of a single Convolutional layer and activation function: .. image:: _static/images/small_IR_graph_demonstration.png @@ -52,7 +52,7 @@ A set consists of several groups of operations: * Generic element-wise arithmetic tensor operations such as ``Add``, ``Subtract``, and ``Multiply``. -* Comparison operations that compare two numeric tensors and produce boolean tensors, for example, ``Less``, ``Equeal``, ``Greater``. +* Comparison operations that compare two numeric tensors and produce boolean tensors, for example, ``Less``, ``Equal``, ``Greater``. * Logical operations that are dealing with boolean tensors, for example, ``And``, ``Xor``, ``Not``. diff --git a/docs/MO_DG/prepare_model/Getting_performance_numbers.md b/docs/MO_DG/prepare_model/Getting_performance_numbers.md index 567706a69e7..0a744ae1670 100644 --- a/docs/MO_DG/prepare_model/Getting_performance_numbers.md +++ b/docs/MO_DG/prepare_model/Getting_performance_numbers.md @@ -128,7 +128,7 @@ Information about layer precision is also stored in the performance counters. resnet\_model/add\_5/fq\_input\_1 NOT\_RUN FakeQuantize undef 0 0 =========================================================== ============= ============== ===================== ================= ============== -| The ``exeStatus`` column of the table includes the following possible values: +| The ``execStatus`` column of the table includes the following possible values: | - ``EXECUTED`` - the layer was executed by standalone primitive. | - ``NOT_RUN`` - the layer was not executed by standalone primitive or was fused with another operation and executed in another layer primitive. | diff --git a/docs/MO_DG/prepare_model/convert_model/pytorch_specific/Convert_YOLACT.md b/docs/MO_DG/prepare_model/convert_model/pytorch_specific/Convert_YOLACT.md index 9ea6aa47ec2..eb1e4424f21 100644 --- a/docs/MO_DG/prepare_model/convert_model/pytorch_specific/Convert_YOLACT.md +++ b/docs/MO_DG/prepare_model/convert_model/pytorch_specific/Convert_YOLACT.md @@ -111,7 +111,7 @@ The patch modifies the framework code by adding a special command-line argument + else: + state_dict = torch.load(path, map_location=torch.device('cpu')) - # For backward compatability, remove these (the new variable is called layers) + # For backward compatibility, remove these (the new variable is called layers) for key in list(state_dict.keys()): @@ -673,8 +679,11 @@ class Yolact(nn.Module): else: diff --git a/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_GNMT_From_Tensorflow.md b/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_GNMT_From_Tensorflow.md index 1b759d03233..62091a71ef7 100644 --- a/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_GNMT_From_Tensorflow.md +++ b/docs/MO_DG/prepare_model/convert_model/tf_specific/Convert_GNMT_From_Tensorflow.md @@ -149,7 +149,7 @@ Converting a GNMT Model to the IR **Step 1**. Clone the GitHub repository and check out the commit: -1. Clone the NMT reposirory: +1. Clone the NMT repository: .. code-block:: sh diff --git a/docs/OV_Runtime_UG/supported_plugins/CPU.md b/docs/OV_Runtime_UG/supported_plugins/CPU.md index d7b1a23f5ba..e872ea51e6c 100644 --- a/docs/OV_Runtime_UG/supported_plugins/CPU.md +++ b/docs/OV_Runtime_UG/supported_plugins/CPU.md @@ -461,7 +461,7 @@ weights are loaded from DDR/L3 cache in the packed format this significantly dec and as a consequence improve inference performance. To use this feature, the user is provided with property ``sparse_weights_decompression_rate``, which can take -values from the interval \[0, 1\]. ``sparse_weights_decompression_rate`` defines sparse rate threashold: only operations +values from the interval \[0, 1\]. ``sparse_weights_decompression_rate`` defines sparse rate threshold: only operations with higher sparse rate will be executed using ``sparse weights decompression feature``. The default value is ``1``, which means the option is disabled. diff --git a/docs/OV_Runtime_UG/supported_plugins/config_properties.md b/docs/OV_Runtime_UG/supported_plugins/config_properties.md index dce31041c5a..c7da42fca1f 100644 --- a/docs/OV_Runtime_UG/supported_plugins/config_properties.md +++ b/docs/OV_Runtime_UG/supported_plugins/config_properties.md @@ -142,7 +142,7 @@ A returned value appears as follows: ``Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz`` In order to understand a list of supported properties on ``ov::Core`` or ``ov::CompiledModel`` levels, use ``ov::supported_properties`` which contains a vector of supported property names. Properties which can be changed, has ``ov::PropertyName::is_mutable`` - returning the ``true`` value. Most of the properites which are changable on ``ov::Core`` level, cannot be changed once the model is compiled, + returning the ``true`` value. Most of the properties which are changable on ``ov::Core`` level, cannot be changed once the model is compiled, so it becomes immutable read-only property. Configure a Work with a Model diff --git a/docs/dev/debug_capabilities.md b/docs/dev/debug_capabilities.md index f228c06e9d6..c576cd9879f 100644 --- a/docs/dev/debug_capabilities.md +++ b/docs/dev/debug_capabilities.md @@ -1,6 +1,6 @@ # OpenVINO Debug Capabilities -OpenVINO components provides different debug capabilities, to get more infromation please read: +OpenVINO components provides different debug capabilities, to get more information please read: * [OpenVINO Model Debug Capabilities](https://docs.openvino.ai/2023.0/openvino_docs_OV_UG_Model_Representation.html#model-debug-capabilities) * [OpenVINO Pass Manager Debug Capabilities](#todo) diff --git a/docs/dev/installing.md b/docs/dev/installing.md index cccead35649..b1be0f2345c 100644 --- a/docs/dev/installing.md +++ b/docs/dev/installing.md @@ -108,7 +108,7 @@ To install OpenVINO Development Tools to work with Caffe models (OpenVINO suppor Linux and macOS: ```sh -#setup virtual envrinment +#setup virtual environment python3 -m venv openvino_env source openvino_env/bin/activate pip install pip --upgrade @@ -119,7 +119,7 @@ pip install openvino_dev--py3-none-any.whl[caffe] --find-links=`__ support, detector network assigned to CPU, and classifiers to iGPU, the pipelined sample outperformes the serial one by the factor of 1.36x (thus adding +36% in overall throughput). +On a test machine (Intel® Core™ i5-6600), with OpenCV built with `Intel® TBB `__ support, detector network assigned to CPU, and classifiers to iGPU, the pipelined sample outperforms the serial one by the factor of 1.36x (thus adding +36% in overall throughput). Conclusion ########### diff --git a/docs/glossary.md b/docs/glossary.md index e176cd4cc86..c285b20a91a 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -67,7 +67,7 @@ Glossary of terms used in OpenVINO™ | *Batch* | Number of images to analyze during one call of infer. Maximum batch size is a property of the model set before its compilation. In NHWC, NCHW, and NCDHW image data layout representations, the 'N' refers to the number of images in the batch. -| *Device Affinitity* +| *Device Affinity* | A preferred hardware device to run inference (CPU, GPU, GNA, etc.). | *Extensibility mechanism, Custom layers* diff --git a/docs/model_zoo.md b/docs/model_zoo.md index abe8b6c85c7..7faec18b192 100644 --- a/docs/model_zoo.md +++ b/docs/model_zoo.md @@ -27,10 +27,10 @@ omz_model_api_ovms_adapter -Open Model Zoo for OpenVINO™ toolkit delivers a wide variety of free, pre-trained deep learning models and demo applications that provide full application templates to help you implement deep learning in Python, C++, or OpenCV Graph API (G-API). Models and demos are avalable in the `Open Model Zoo GitHub repo `__ and licensed under Apache License Version 2.0. +Open Model Zoo for OpenVINO™ toolkit delivers a wide variety of free, pre-trained deep learning models and demo applications that provide full application templates to help you implement deep learning in Python, C++, or OpenCV Graph API (G-API). Models and demos are available in the `Open Model Zoo GitHub repo `__ and licensed under Apache License Version 2.0. Browse through over 200 neural network models, both :doc:`public ` and from :doc:`Intel `, and pick the right one for your solution. Types include object detection, classification, image segmentation, handwriting recognition, text to speech, pose estimation, and others. The Intel models have already been converted to work with OpenVINO™ toolkit, while public models can easily be converted using the :doc:`Model Optimizer ` utility. Get started with simple :doc:`step-by-step procedures ` to learn how to build and run demo applications or discover the :doc:`full set of demos ` and adapt them for implementing specific deep learning scenarios in your applications. -@endsphinxdirective \ No newline at end of file +@endsphinxdirective diff --git a/docs/nbdoc/README.md b/docs/nbdoc/README.md index 90f0efb5636..d3d23118f35 100644 --- a/docs/nbdoc/README.md +++ b/docs/nbdoc/README.md @@ -1,7 +1,7 @@ # Jupyter notebooks autodoc Auto fetching documentations designed for openvino notebooks tutorials. -This module is responsible for fetching artifats, in this particular example jupyter tutorial notebooks and converting them to notebook documentation. +This module is responsible for fetching artifacts, in this particular example jupyter tutorial notebooks and converting them to notebook documentation. ## Step 0. Prepare venv diff --git a/docs/ops/arithmetic/Add_1.md b/docs/ops/arithmetic/Add_1.md index d773d21c386..8bb833c7e35 100644 --- a/docs/ops/arithmetic/Add_1.md +++ b/docs/ops/arithmetic/Add_1.md @@ -6,7 +6,7 @@ **Category**: *Arithmetic binary* -**Short description**: *Add* performs element-wise addition operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. +**Short description**: *Add* performs element-wise addition operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* 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. diff --git a/docs/ops/arithmetic/Atanh_3.md b/docs/ops/arithmetic/Atanh_3.md index 056c6719c08..1790b4f6610 100644 --- a/docs/ops/arithmetic/Atanh_3.md +++ b/docs/ops/arithmetic/Atanh_3.md @@ -16,13 +16,13 @@ Float type input: a_{i} = atanh(a_{i}) -Signed Intragral type put: +Signed Integral type put: .. math:: a_{i} = (i <= -1) ? std::numeric_limits::min() : (i >= 1) ? std::numeric_limits::max() : atanh(a_{i}) -Unsigned Intragral type put: +Unsigned Integral type put: .. math:: diff --git a/docs/ops/arithmetic/Divide_1.md b/docs/ops/arithmetic/Divide_1.md index e9855d3824c..898fc93bdff 100644 --- a/docs/ops/arithmetic/Divide_1.md +++ b/docs/ops/arithmetic/Divide_1.md @@ -6,7 +6,7 @@ **Category**: *Arithmetic binary* -**Short description**: *Divide* performs element-wise division operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. +**Short description**: *Divide* performs element-wise division operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* 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. diff --git a/docs/ops/arithmetic/Multiply_1.md b/docs/ops/arithmetic/Multiply_1.md index d58ca478491..969c88037a3 100644 --- a/docs/ops/arithmetic/Multiply_1.md +++ b/docs/ops/arithmetic/Multiply_1.md @@ -6,7 +6,7 @@ **Category**: *Arithmetic binary* -**Short description**: *Multiply* performs element-wise multiplication operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. +**Short description**: *Multiply* performs element-wise multiplication operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* 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. diff --git a/docs/ops/arithmetic/Subtract_1.md b/docs/ops/arithmetic/Subtract_1.md index e60941bb75b..2398bc9824f 100644 --- a/docs/ops/arithmetic/Subtract_1.md +++ b/docs/ops/arithmetic/Subtract_1.md @@ -6,7 +6,7 @@ **Category**: *Arithmetic binary* -**Short description**: *Subtract* performs element-wise subtraction operation with two given tensors applying broadcasting rule specified in the *auto_broacast* attribute. +**Short description**: *Subtract* performs element-wise subtraction operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* 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. diff --git a/docs/ops/broadcast_rules.md b/docs/ops/broadcast_rules.md index 9657e68eb5f..b63379f2944 100644 --- a/docs/ops/broadcast_rules.md +++ b/docs/ops/broadcast_rules.md @@ -27,7 +27,7 @@ Rules 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)``. Except (-1) for default valule, no other negative values are allowed for *axis*. +4. If *axis* is set to default (-1) calculate new value: ``axis = rank(A) - rank(B)``. Except (-1) for default value, no other negative values are allowed for *axis*. 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 diff --git a/docs/ops/infrastructure/Assign_3.md b/docs/ops/infrastructure/Assign_3.md index 2af130576ad..bb0a5d02660 100644 --- a/docs/ops/infrastructure/Assign_3.md +++ b/docs/ops/infrastructure/Assign_3.md @@ -18,7 +18,7 @@ declared in ``variable_id`` and returns an error otherwise. * *variable_id* - * **Description**: identificator of the variable to be updated + * **Description**: identifier of the variable to be updated * **Range of values**: any non-empty string * **Type**: string * **Required**: *yes* diff --git a/docs/ops/infrastructure/ReadValue_3.md b/docs/ops/infrastructure/ReadValue_3.md index 91f67b361fb..de19755b5e1 100644 --- a/docs/ops/infrastructure/ReadValue_3.md +++ b/docs/ops/infrastructure/ReadValue_3.md @@ -20,7 +20,7 @@ with the shape and type from the 1 input. * *variable_id* - * **Description**: identificator of the variable to be read + * **Description**: identifier of the variable to be read * **Range of values**: any non-empty string * **Type**: string * **Required**: *yes* diff --git a/docs/ops/matrix/Einsum_7.md b/docs/ops/matrix/Einsum_7.md index 5ceb079e604..4955cbe206d 100644 --- a/docs/ops/matrix/Einsum_7.md +++ b/docs/ops/matrix/Einsum_7.md @@ -18,7 +18,7 @@ The operation supports ``equation`` in explicit and implicit modes. The formats In explicit mode, the einsum ``equation`` has the output subscript separated from the input subscripts by ``->``, and has the following format for ``n`` operands: ``, , ..., -> ``. Each input subscript ```` contains a sequence of labels (alphabetic letters ``['A',...,'Z','a',...,'z']``), -where each label refers to a dimension of the corresponsing operand. Labels are case sensitive and capital letters precede lowercase letters in alphabetical sort. +where each label refers to a dimension of the corresponding operand. Labels are case sensitive and capital letters precede lowercase letters in alphabetical sort. Labels do not need to appear in a subscript in alphabetical order. The subscript for a scalar input is empty. The input subscripts are separated with a comma ``,``. The output subscript ```` represents a sequence of labels (alphabetic letters ``['A',...,'Z','a',...,'z']``). diff --git a/docs/ops/movement/ScatterUpdate_3.md b/docs/ops/movement/ScatterUpdate_3.md index 478b393b4f4..976da815d11 100644 --- a/docs/ops/movement/ScatterUpdate_3.md +++ b/docs/ops/movement/ScatterUpdate_3.md @@ -68,7 +68,7 @@ The value can be in the range ``[ -r, r - 1]``, where ``r`` is the rank of ``dat 125 20 - < !-- udpates --> + < !-- updates --> 1000 125 20 @@ -102,7 +102,7 @@ The value can be in the range ``[ -r, r - 1]``, where ``r`` is the rank of ``dat < !-- indices --> 2 < !-- {0, 2} --> - < !-- udpates --> + < !-- updates --> 3 < !-- {1.0f, 1.0f} --> 2 < !-- {1.0f, 1.0f} --> < !-- {1.0f, 2.0f} --> diff --git a/docs/ops/sequence/CTCLoss_4.md b/docs/ops/sequence/CTCLoss_4.md index 2473552b35f..fddcbbe1256 100644 --- a/docs/ops/sequence/CTCLoss_4.md +++ b/docs/ops/sequence/CTCLoss_4.md @@ -12,7 +12,7 @@ *CTCLoss* operation is presented in `Connectionist Temporal Classification - Labeling Unsegmented Sequence Data with Recurrent Neural Networks: Graves et al., 2016 `__ -*CTCLoss* estimates likelihood that a target ``labels[i,:]`` can occur (or is real) for given input sequence of logits ``logits[i,:,:]``. Briefly, *CTCLoss* operation finds all sequences aligned with a target ``labels[i,:]``, computes log-probabilities of the aligned sequences using ``logits[i,:,:]`` and computes a negative sum of these log-probabilies. +*CTCLoss* estimates likelihood that a target ``labels[i,:]`` can occur (or is real) for given input sequence of logits ``logits[i,:,:]``. Briefly, *CTCLoss* operation finds all sequences aligned with a target ``labels[i,:]``, computes log-probabilities of the aligned sequences using ``logits[i,:,:]`` and computes a negative sum of these log-probabilities. Input sequences of logits ``logits`` can have different lengths. The length of each sequence ``logits[i,:,:]`` equals ``logit_length[i]``. A length of target sequence ``labels[i,:]`` equals ``label_length[i]``. The length of the target sequence must not be greater than the length of corresponding input sequence ``logits[i,:,:]``. diff --git a/docs/ovsa/ovsa_get_started.md b/docs/ovsa/ovsa_get_started.md index b31211d6389..7119708b23f 100644 --- a/docs/ovsa/ovsa_get_started.md +++ b/docs/ovsa/ovsa_get_started.md @@ -180,9 +180,9 @@ Begin this step on the Intel® Core™ or Xeon® processor machine that meets th 5. Build and install the `libtpm package `__. 6. Build and install the `swtpm package `__. 7. Add the ``swtpm`` package to the ``$PATH`` environment variable. -8. Install the software tool `tpm2-tss `__ . For innstallation information follow `here `__. -9. Install the software tool `tpm2-abmrd `__ . For innstallation information follow `here `__. -10. Install the `tpm2-tools `__ . For innstallation information follow `here `__. +8. Install the software tool `tpm2-tss `__ . For installation information follow `here `__. +9. Install the software tool `tpm2-abmrd `__ . For installation information follow `here `__. +10. Install the `tpm2-tools `__ . For installation information follow `here `__. 11. Install the `Docker packages `__ . .. note:: @@ -525,11 +525,11 @@ Step 5: Set Up one Guest VM for the User role 3. Shut down the Guest VM.

**Option 2: Manually install additional software** - 1. Install the software tool `tpm2-tss `__ For innstallation information follow `here `__ + 1. Install the software tool `tpm2-tss `__ For installation information follow `here `__ 2. Install the software tool `tpm2-abmrd `__ - For innstallation information follow `here `__ + For installation information follow `here `__ 3. Install the `tpm2-tools `__ - For innstallation information follow `here `__ + For installation information follow `here `__ 4. Install the `Docker packages `__ 5. Shut down the Guest VM. diff --git a/src/core/shape_inference/include/select_shape_inference.hpp b/src/core/shape_inference/include/select_shape_inference.hpp index 0f552477d7f..04b87e8d229 100644 --- a/src/core/shape_inference/include/select_shape_inference.hpp +++ b/src/core/shape_inference/include/select_shape_inference.hpp @@ -18,7 +18,7 @@ void shape_infer(const Select* op, const std::vector& input_shapes, std::vect auto& result_shape = output_shapes[0]; if (broadcast_spec.m_type == op::AutoBroadcastType::PDPD) { result_shape = input_shapes[1]; // 'then' tensor - // in PDPD type, Broacast-merging 'else' into 'then' one way not each other. + // in PDPD type, Broadcast-merging 'else' into 'then' one way not each other. NODE_VALIDATION_CHECK(op, T::broadcast_merge_into(result_shape, input_shapes[2], broadcast_spec), "'Else' tensor shape is not broadcastable.");