Concat

Concat  // Concatenation operation

Description

Produce from Nodes of args some outputs with the same attributes

Inputs

Name

Type

Notes

args

Nodes

All element types the same. All shapes the same except on concatenation_axis

Attributes

Name

Notes

concatenation_axis

Less than the rank of the shape

Outputs

Name

Element Type

Shape

output

Same as args | Same as arg on non-concatenation_axis
Sum of concatenation_axis lengths of args

Mathematical Definition

We map each tensor in args to a segment of output based on the coordinate at coordinate_axis.

Let

\[\begin{split}s(i) &= \sum_{j<i} \mathtt{args}[i].\mathtt{shape}\left[\mathtt{concatenation_axis}\right]\\ t(i) &= \text{The greatest }j\text{ such that }i \ge s(j)\\ p(C)_i &= \begin{cases} C_i-s(t(i))&\text{if }i==\mathtt{concatenation_axis}\\ C_i&\text{otherwise} \end{cases}\\ \mathtt{output}_C&=\mathtt{args}[t(C_i)]_{p(C)}\end{split}\]

Backprop

We slice the backprop value into the backprops associated with the inputs.

C++ Interface

class Concat : public ngraph::op::Op

Concatenation operation.

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

Concat()

Constructs a concatenation operation.

Concat(const OutputVector &args, size_t concatenation_axis)

Constructs a concatenation operation.

Parameters
  • args: The outputs producing the input tensors.

  • concatenation_axis: The axis along which to concatenate the input tensors.

Concat(const NodeVector &args, size_t concatenation_axis)

Constructs a concatenation operation.

Parameters
  • args: The nodes producing the input tensors.

  • concatenation_axis: The axis along which to concatenate the input tensors.

void validate_and_infer_types()

Throws if the node is invalid.

size_t get_concatenation_axis() const

Return

The concatenation axis.