# Broadcast¶

```
Broadcast // Operation that produces a tensor based on arg's axes
```

## Description¶

Operation whose `output`

tensor ignores axes not in the `arg`

tensor.

### Inputs¶

Name | Element Type | Shape |
---|---|---|

`arg` |
Any | Any |

### Attributes¶

Name | Type | Notes |
---|---|---|

`shape` |
`Shape` |
The shape of the output. |

`broadcast_axes` |
`AxisSet` |
Axis positions in `shape` that
are broadcast. |

### Outputs¶

Name | Element Type | Shape |
---|---|---|

`output` |
Same as `arg` |
Same as `shape` |

The shape of `arg`

must match `shape`

with elements in `broadcast_axes`

removed.

For example, if `arg`

is \([a, b, c]\) then

\[\begin{split}\mathtt{Broadcast(arg, Shape{2, 3}, AxisSet{0})} &=
\begin{bmatrix}
a & b & c\\
a & b & c
\end{bmatrix}\\
\mathtt{Broadcast(arg, Shape{3, 2}, AxisSet{1})} &=
\begin{bmatrix}
a & a\\
b & b\\
c & c
\end{bmatrix}\end{split}\]

## Mathematical Definition¶

For a coordinate \(C\), let \(p(C)\) be a coordinate with the
axes in `broadcast_axes`

removed. For example, if
\(\mathtt{broadcast_axes}=\{1,3\}\) then \(p([d_0, d_1,
d_2, d_3, d_4]) = [d_0, d_2, d_4]\). Then

\[\mathtt{output}_C = \mathtt{arg}_{p(C)}.\]

## Backprop¶

\[\overline{\mathtt{arg}} \leftarrow \mathtt{Sum}(\Delta, \mathtt{broadcast_axes}).\]

## C++ Interface¶

Warning

doxygenclass: Cannot find class “ngraph::op::Broadcast” in doxygen xml output for project “ngraph” from directory: ../../doxygen/xml