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 ints for height and width. If type is int, it means that height equals width. Must be specified.
dilation (Union[int, tuple[int], list[int]], optional) – The size of the dilation, should be two ints for height and width. If type is int, it means that height equals width. Default:
1.padding (Union[int, tuple[int], list[int]], optional) – The size of the padding, should be two ints for height and width. If type is int, it means that height equals width. Default:
0.stride (Union[int, tuple[int], list[int]], optional) – The size of the stride, should be two ints for height and width. If type is int, it means that height equals width. Default:
1.
- Returns
A Tensor, with same type as input . And its shape is as described above.
- Raises
TypeError – If the data type of output_size, kernel_size, stride, dilation, or padding is not int, tuple or list.
ValueError – If the value of output_size, kernel_size, dilation, or stride is not greater than zero or has more than two elements.
ValueError – If the value of padding is less than zero or has more than two elements.
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:
AscendGPUCPU
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)