SquaredDifference operation specification refactoring. (#4567)

* SquaredDifference operation specification refactoring.

* Add dummy broadcast_rules.md.

* Minor fixes, e.g. capitalize operation names, typos.

Co-authored-by: Szymon Durawa <szymon.durawa@intel.com>
This commit is contained in:
Jozef Daniecki 2021-03-10 07:57:55 +01:00 committed by GitHub
parent dcc8215784
commit 4791f3bfd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,7 +4,14 @@
**Category**: Arithmetic binary operation **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**: **Attributes**:
@ -12,40 +19,32 @@
* **Description**: specifies rules used for auto-broadcasting of input tensors. * **Description**: specifies rules used for auto-broadcasting of input tensors.
* **Range of values**: * **Range of values**:
* *none* - no auto-broadcasting is allowed, all input shapes should match * *none* - no auto-broadcasting is allowed, all input shapes must match
* *numpy* - numpy broadcasting rules, aligned with ONNX Broadcasting. Description is available in <a href="https://github.com/onnx/onnx/blob/master/docs/Broadcasting.md">ONNX docs</a>. * *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations](../broadcast_rules.md)
* **Type**: string * **Type**: string
* **Default value**: "numpy" * **Default value**: "numpy"
* **Required**: *no* * **Required**: *no*
**Inputs** **Inputs**
* **1**: A tensor of type T. **Required.** * **1**: A tensor of type T and arbitrary shape. Required.
* **2**: A tensor of type T. **Required.** * **2**: A tensor of type T and arbitrary shape. Required.
**Outputs** **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** **Types**
* *T*: any numeric type. * *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** **Examples**
*Example 1* *Example 1 - no broadcasting*
```xml ```xml
<layer ... type="SquaredDifference"> <layer ... type="SquaredDifference">
<data auto_broadcast="none"/>
<input> <input>
<port id="0"> <port id="0">
<dim>256</dim> <dim>256</dim>
@ -64,9 +63,10 @@ o_{i} = (a_{i} - b_{i})^2
</output> </output>
</layer> </layer>
``` ```
*Example 2: broadcast* *Example 2: numpy broadcasting*
```xml ```xml
<layer ... type="SquaredDifference"> <layer ... type="SquaredDifference">
<data auto_broadcast="numpy"/>
<input> <input>
<port id="0"> <port id="0">
<dim>8</dim> <dim>8</dim>