reshape¶
- paddle.sparse. reshape ( x, shape, name=None ) [source]
-
Changes the shape of
x
without changing its value, requiring x to be a SparseCooTensor or SparseCsrTensor. Currently this function can only reshape the sparse dims ofx
, butshape
argument must be specified as the shape of the reshaped tensor.Note that if x is a SparseCsrTensor, then len(shape) must be 2 or 3.
There are some tricks when specifying the target shape.
-
-1 means the value of this dimension is inferred from the total element number of x and remaining dimensions. Thus one and only one dimension can be set -1.
-
0 means the actual dimension value is going to be copied from the corresponding dimension of x. The indices of 0 in the target shape can not exceed the rank of x.
Here are some examples to explain it.
-
Given a 3-D tensor x with a shape [2, 4, 6], and the target shape is [6, 8], the reshape operator will transform x into a 2-D tensor with shape [6, 8] and leaving x’s data unchanged.
-
Given a 3-D tensor x with a shape [2, 4, 6], and the target shape is [2, 3, -1, 2], the reshape operator will transform x into a 4-D tensor with shape [2, 3, 4, 2] and leaving x’s data unchanged. In this case, one dimension of the target shape is set to -1, the value of this dimension is inferred from the total element number of x and remaining dimensions.
-
Given a 3-D tensor x with a shape [2, 4, 6], and the target shape is [-1, 0, 3, 2], the reshape operator will transform x into a 4-D tensor with shape [2, 4, 3, 2] and leaving x’s data unchanged. In this case, besides -1, 0 means the actual dimension value is going to be copied from the corresponding dimension of x.
- Parameters
-
x (Tensor) – The input sparse tensor with data type
float32
,float64
,int32
,int64
orbool
.shape (list|tuple) – Define the target shape. At most one dimension of the target shape can be -1. The data type is
int32
.name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name.
- Returns
-
A reshaped Tensor with the same data type as
x
. - Return type
-
Tensor
Examples
>>> import paddle >>> x_shape = [6, 2, 3] >>> new_shape = [1, 0, 2, -1, 3] >>> format = "coo" >>> dense_x = paddle.randint(-100, 100, x_shape) * paddle.randint(0, 2, x_shape) >>> if format == "coo": ... sp_x = dense_x.to_sparse_coo(len(x_shape)) >>> else: ... sp_x = dense_x.to_sparse_csr() >>> sp_out = paddle.sparse.reshape(sp_x, new_shape) >>> print(sp_out.shape) [1, 2, 2, 3, 3]
-