mindspore.ops.fold
- mindspore.ops.fold(input, output_size, kernel_size, dilation=1, padding=0, stride=1)[source]
Combines an array of sliding local blocks into a large containing tensor.
Consider a batched input tensor of shape \((N, C \times \prod(\text{kernel_size}), L)\) , where \(N\) is the batch dimension, \(C \times \prod(\text{kernel_size})\) is the total number of values within each block (a block has \(\prod(\text{kernel_size})\) spatial locations each containing a C-channeled vector), and \(L\) is the total number of such blocks:
\[L = \prod_d \left\lfloor\frac{\text{output_size}[d] + 2 \times \text{padding}[d] % - \text{dilations}[d] \times (\text{kernel_size}[d] - 1) - 1}{\text{strides}[d]} + 1\right\rfloor,\]where \(d\) is over all spatial dimensions.
Therefore, output_size is the spatial shape of the large containing tensor of the sliding local blocks.
The dilation, padding and stride arguments specify how the sliding blocks are retrieved.
Warning
The input must be a 3-dimensional Tensor with shape \((N, C \times \prod(\text{kernel_size}), L)\) .
The output must be a 4-dimensional Tensor with shape \((N, C, output\_size[0], output\_size[1], ...)\) .
- Parameters
input (Tensor) – 3-D Tensor, supported dtypes: float16, float32, float64, complex64 and complex128.
output_size (Tensor) – 1D tensor with 2 elements of data type int.
kernel_size (Union[int, tuple[int], list[int]]) – The size of the kernel, should be two int for height and width. If type is int, it means that height equal with width. Must be specified.
dilation (Union[int, tuple[int], list[int]], optional) – The size of the dilation, should be two int for height and width. If type is int, it means that height equal with width. Default:
1
.padding (Union[int, tuple[int], list[int]], optional) – The size of the padding, should be two int for height and width. If type is int, it means that height equal with width. Default:
0
.stride (Union[int, tuple[int], list[int]], optional) – The size of the stride, should be two int for height and width. If type is int, it means that height equal with width. Default:
1
.
- Returns
A Tensor, with same type as input . And its shape is as described above.
- Raises
TypeError – If output_size, kernel_size, stride, dilation, padding data type is not int, tuple or list.
ValueError – If output_size, kernel_size, dilation, stride value is not greater than zero or elements number more than 2.
ValueError – If padding value is less than zero or elements number more than 2.
ValueError – If input.shape[1] != kernel_size[0] * kernel_size[1]
ValueError – If input.shape[2] does not match the calculated number of sliding blocks.
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> import numpy as np >>> from mindspore import Tensor, ops >>> from mindspore import dtype as mstype >>> x = Tensor(input_data=np.random.rand(16, 64, 25), dtype=mstype.float32) >>> output_size = Tensor(input_data=[8, 8], dtype=mstype.int32) >>> output = ops.fold(x, output_size, [2, 2], [2, 2], [2, 2], [2, 2]) >>> print(output.shape) (16, 16, 8, 8)