mindspore.ops.space_to_batch_nd

View Source On Gitee
mindspore.ops.space_to_batch_nd(input_x, block_size, paddings)[source]

Divides a tensor's spatial dimensions into blocks and combines the block sizes with the original batch.

This operation will divide spatial dimensions into blocks with block_size, and after division, the output tensor's spatial dimension is the corresponding number of blocks. The output tensor's batch dimension is the product of the original batch and the product of block_size. Before division, the spatial dimensions of the input are zero padded according to paddings if necessary. Assume input shape is \((n, c_1, ... c_k, w_1, ..., w_M)\), then the shape of the output tensor will be \((n', c_1, ... c_k, w'_1, ..., w'_M)\), where

\[\begin{split}\begin{array}{ll} \\ n' = n*(block\_size[0] * ... * block\_size[M]) \\ w'_i = (w_i + paddings[i][0] + paddings[i][1])//block\_size[i] \end{array}\end{split}\]
Parameters
  • input_x (Tensor) – The input tensor. It must be a 4-D tensor on Ascend.

  • block_size (Union[list(int), tuple(int), int]) – The block size of dividing block with all value greater than 1. If block_size is a tuple or list, the length of block_size is M corresponding to the number of spatial dimensions. If block_size is an int, the block size of M dimensions are the same, equal to block_size. M must be 2 on Ascend.

  • paddings (Union[tuple, list]) – The padding values for spatial dimensions, containing M subtraction list. Each contains 2 integer values. All values must be greater than 0. paddings[i] specifies the paddings for the spatial dimension i, which corresponds to the input dimension i + offset. It is required that input_shape[i+offset]+paddings[i][0]+paddings[i][1] is divisible by block_size[i]. M must be 2 on Ascend.

Returns

Tensor, the output tensor with the same data type as input.

Raises
  • ValueError – If block_size is not one dimensional when block_size is a list or tuple.

  • ValueError – If the length of block_size is not 2 on Ascend.

  • ValueError – If the element of block_size is not an integer larger than 1.

  • ValueError – If shape of paddings is not (M, 2), where M is the length of block_size.

  • ValueError – If the element of paddings is not an integer larger than 0.

  • TypeError – If block_size is not one of list, tuple, int.

  • TypeError – If paddings is neither list nor tuple.

Supported Platforms:

Ascend GPU CPU

Examples

>>> import numpy as np
>>> import mindspore
>>> from mindspore import Tensor, ops
>>> block_size = [2, 2]
>>> paddings = [[0, 0], [0, 0]]
>>> input_x = Tensor(np.array([[[[1, 2], [3, 4]]]]), mindspore.float32)
>>> output = ops.space_to_batch_nd(input_x, block_size, paddings)
>>> print(output)
[[[[1.]]]
 [[[2.]]]
 [[[3.]]]
 [[[4.]]]]