tf.sparse_reshape(sp_input, shape, name=None)

tf.sparse_reshape(sp_input, shape, name=None)

See the guide: Sparse Tensors > Manipulation

Reshapes a SparseTensor to represent values in a new dense shape.

This operation has the same semantics as reshape on the represented dense tensor. The indices of non-empty values in sp_input are recomputed based on the new dense shape, and a new SparseTensor is returned containing the new indices and new shape. The order of non-empty values in sp_input is unchanged.

If one component of shape is the special value -1, the size of that dimension is computed so that the total dense size remains constant. At most one component of shape can be -1. The number of dense elements implied by shape must be the same as the number of dense elements originally represented by sp_input.

For example, if sp_input has shape [2, 3, 6] and indices / values:

[0, 0, 0]: a
[0, 0, 1]: b
[0, 1, 0]: c
[1, 0, 0]: d
[1, 2, 3]: e

and shape is [9, -1], then the output will be a SparseTensor of shape [9, 4] and indices / values:

[0, 0]: a
[0, 1]: b
[1, 2]: c
[4, 2]: d
[8, 1]: e


  • sp_input: The input SparseTensor.
  • shape: A 1-D (vector) int64 Tensor specifying the new dense shape of the represented SparseTensor.
  • name: A name prefix for the returned tensors (optional)


A SparseTensor with the same non-empty values but with indices calculated by the new dense shape.


  • TypeError: If sp_input is not a SparseTensor.

Defined in tensorflow/python/ops/