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::v0::Broadcast” in doxygen xml output for project “ngraph” from directory: ../../doxygen/xml