Concatenates tensors along one dimension.

Aliases:

  • tf.compat.v1.concat
  • tf.compat.v2.concat
 tf.concat(
    values,
    axis,
    name='concat'
)

Used in the guide:

  • Raggedtensors``

Used in the tutorials:

  • Betterperformancewith tf.function
  • Image captioningwith visualattention``
  • Neuralmachinetranslationwith attention
  • Transformer model for languageunderstanding``
  • Unicode strings Concatenates the list of tensors values along dimension axis. If values[i].shape = [D0, D1, ... Daxis(i), ...Dn], the concatenated result has shape
 [D0, D1, ... Raxis, ...Dn]

where

 Raxis = sum(Daxis(i))

That is, the data from the input tensors is joined along the axis dimension. The number of dimensions of the input tensors must match, and all dimensions except axis must be equal.

For example:

 t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
tf.concat([t1, t2], 0)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
tf.concat([t1, t2], 1)  # [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]

# tensor t3 with shape [2, 3]
# tensor t4 with shape [2, 3]
tf.shape(tf.concat([t3, t4], 0))  # [4, 3]
tf.shape(tf.concat([t3, t4], 1))  # [2, 6]

As in Python, the axis could also be negative numbers. Negative axis are interpreted as counting from the end of the rank, i.e., axis + rank(values)-th dimension.

For example:

 t1 = [[[1, 2], [2, 3]], [[4, 4], [5, 3]]]
t2 = [[[7, 4], [8, 4]], [[2, 10], [15, 11]]]
tf.concat([t1, t2], -1)

would produce:

 [[[ 1,  2,  7,  4],
  [ 2,  3,  8,  4]],

 [[ 4,  4,  2, 10],
  [ 5,  3, 15, 11]]]
 tf.concat([tf.expand_dims(t, axis) for t in tensors], axis)

can be rewritten as

 tf.stack(tensors, axis=axis)

Args:

  • values: A list of Tensor objects or a single Tensor.

Returns:

A Tensor resulting from concatenation of the input tensors.