tf.sparse.reset_shape

TensorFlow 2 version View source on GitHub

Resets the shape of a SparseTensor with indices and values unchanged.

If new_shape is None, returns a copy of sp_input with its shape reset to the tight bounding box of sp_input. This will be a shape consisting of all zeros if sp_input has no values.

If new_shape is provided, then it must be larger or equal in all dimensions compared to the shape of sp_input. When this condition is met, the returned SparseTensor will have its shape reset to new_shape and its indices and values unchanged from that of sp_input.

For example:

Consider a sp_input with shape [2, 3, 5]:

  • It is an error to set new_shape as [3, 7] since this represents a rank-2 tensor while sp_input is rank-3. This is either a ValueError during graph construction (if both shapes are known) or an OpError during run time.

  • Setting new_shape as [2, 3, 6] will be fine as this shape is larger or equal in every dimension compared to the original shape [2, 3, 5].

  • On the other hand, setting new_shape as [2, 3, 4] is also an error: The third dimension is smaller than the original shape 2, 3, 5.

  • If new_shape is None, the returned SparseTensor will have a shape [2, 3, 4], which is the tight bounding box of sp_input.

sp_input The input SparseTensor.
new_shape None or a vector representing the new shape for the returned SparseTensor.

A SparseTensor indices and values unchanged from input_sp. Its shape is new_shape if that is set. Otherwise it is the tight bounding box of input_sp

TypeError If sp_input is not a SparseTensor.
ValueError If new_shape represents a tensor with a different rank from that of sp_input (if shapes are known when graph is constructed).
ValueError If new_shape is determined during graph build to have dimension sizes that are too small.
OpError

  • If new_shape has dimension sizes that are too small.
  • If shapes are not known during graph construction time, and during run time it is found out that the ranks do not match.