# Dot

Dot  //  Generalized dot product operation


## Description¶

Generalized dot product operation, including scalar-tensor product, matrix-vector product, and matrix multiplication.

A few common cases are as follows:

• If $$m = 0$$ and $$n = 1$$ or $$p = 1$$, the operation is a scalar-tensor product.

• If $$m = 1$$, $$n = 2$$, and $$p = 1$$, the operation is a matrix-vector product.

• If $$m = 1$$ and $$n = p = 2$$, the operation is a matrix multiplication.

### Inputs¶

Name

Element Type

Shape

arg0

any

$$(i_1,\dots,i_n,j_1,\dots,j_m)$$

arg1

same as arg0

$$(j_1,\ldots,j_m,k_1,\dots,k_p)$$

### Attributes¶

Name

reduction_axes_count

size_t

The number of axes to reduce through dot-product (corresponds to $$m$$ in the formulas above)

### Outputs¶

Name

Element Type

Shape

output

same as arg0

$$(i_1,\ldots,i_n,k_1,\dots,k_p)$$

## Mathematical Definition¶

$\begin{split}\mathtt{output}_{i_1,\dots,i_n,k_1,\ldots,k_p} = \begin{cases} \mathtt{arg0}_{i_1,\dots,i_n} \cdot \mathtt{arg1}_{k_1,\dots,k_p}&\text{if }m=0,\\ \sum_{j_1, \ldots, j_m} \mathtt{arg0}_{i_1,\dots,i_n,j_1,\dots,j_m} \cdot \mathtt{arg1}_{j_1,\ldots,j_m,k_1,\ldots,k_p} &\text{otherwise}. \end{cases}\end{split}$

## Backprop¶

To be documented.

## C++ Interface¶

class Dot : public ngraph::op::Op

Generalized dot product operation, including scalar-tensor product, matrix-vector product, and matrix multiplication.

Public Functions

const std::string &description() const

Get the string name for the type of the node, such as Add or Multiply. The class name, must not contain spaces as it is used for codegen.

Return

A const reference to the node’s type name

Dot()

Constructs a dot product operation.

Dot(const Output<Node> &arg0, const Output<Node> &arg1, size_t reduction_axes_count, bool has_reduction_axes_count = true)

Constructs a dot product operation.

Parameters
• arg0: The node producing the first argument.

• arg1: The node producing the second argument.

• reduction_axes_count: The number of axes to dot.

Dot(const Output<Node> &arg0, const Output<Node> &arg1)

Constructs a dot product operation with default dot-axis selection depending on the inputs.

If arg0 or arg1 is a scalar, there are no dot-axes. Else, there is one dot-axis.

(Note that in particular, this results in scalar-tensor products where one or the other argument is a scalar, a matrix-vector products where arg0 is a matrix and arg1 is a vector, and a matrix multiplication where arg0 and arg1 are both matrices.)

Parameters
• arg0: The node producing the first argument.

• arg1: The node producing the second argument.

void validate_and_infer_types()

Throws if the node is invalid.