mindspore.ops.BatchToSpace
- class mindspore.ops.BatchToSpace(block_size, crops)[源代码]
将批处理数据重新排列到空间数据中。
此操作将批处理维度N拆分为 block_size 大小的块(blocks),输出Tensor的维度N,即为拆分后对应的块数。输出Tensor的H、W维分别是原H、W维和 block_size 在给定裁剪量情况下的乘积。
- 参数:
block_size (int) - 指定拆分的块大小,其值不能小于2。
crops (Union[list(int), tuple(int)]) - 指定H和W维度上的裁剪值,包含2个列表。每个列表包含2个整数。所有值都必须不小于0。crops[i]表示指定空间维度i的裁剪值,该维度对应于输入维度i+2。要求 \(input\_shape[i+2]*block\_size > crops[i][0]+crops[i][1]\) 。
- 输入:
input_x (Tensor) - 输入Tensor。必须是四维,第零维度(维度n)的大小必须可被 block_size 的乘积整除。数据类型为float16或float32。
- 输出:
Tensor,数据类型与输入Tensor相同。假设输入shape为 \((n, c, h, w)\) ,经过 block_size 和 crops 计算后。输出shape将为 \((n', c', h', w')\) ,其中
\(n' = n//(block\_size*block\_size)\)
\(c' = c\)
\(h' = h*block\_size-crops[0][0]-crops[0][1]\)
\(w' = w*block\_size-crops[1][0]-crops[1][1]\)
- 异常:
TypeError - 如果 block_size 或 crops 的元素不是int。
TypeError - 如果 crops 既不是list也不是tuple。
ValueError - 如果 block_size 的值小于2。
- 支持平台:
Ascend
GPU
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, ops >>> block_size = 2 >>> crops = [[0, 0], [0, 0]] >>> batch_to_space = ops.BatchToSpace(block_size, crops) >>> input_x = Tensor(np.array([[[[1]]], [[[2]]], [[[3]]], [[[4]]]]), mindspore.float32) >>> output = batch_to_space(input_x) >>> print(output) [[[[1. 2.] [3. 4.]]]]