Google I/O returns May 18-20! Reserve space and build your schedule Register now


Stacks a list of rank-R tensors into one rank-(R+1) tensor.

Used in the notebooks

Used in the guide Used in the tutorials

See also tf.concat, tf.tile, tf.repeat.

Packs the list of tensors in values into a tensor with rank one higher than each tensor in values, by packing them along the axis dimension. Given a list of length N of tensors of shape (A, B, C);

if axis == 0 then the output tensor will have the shape (N, A, B, C). if axis == 1 then the output tensor will have the shape (A, N, B, C). Etc.

For example:

x = tf.constant([1, 4])
y = tf.constant([2, 5])
z = tf.constant([3, 6])
tf.stack([x, y, z])
<tf.Tensor: shape=(3, 2), dtype=int32, numpy=
array([[1, 4],
       [2, 5],
       [3, 6]], dtype=int32)>
tf.stack([x, y, z], axis=1)
<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[1, 2, 3],
       [4, 5, 6]], dtype=int32)>

This is the opposite of unstack. The numpy equivalent is np.stack

np.array_equal(np.stack([x, y, z]), tf.stack([x, y, z]))

values A list of Tensor objects with the same shape and type.
axis An int. The axis to stack along. Defaults to the first dimension. Negative values wrap around, so the valid range is [-(R+1), R+1).
name A name for this operation (optional).

output A stacked Tensor with the same type as values.

ValueError If axis is out of the range [-(R+1), R+1).