mindspore.nn.PixelShuffle

class mindspore.nn.PixelShuffle(upscale_factor)[源代码]

input 应用像素重组操作,它实现了步长为 \(1/r\) 的子像素卷积。关于PixelShuffle算法详细介绍,请参考 Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network

通常情况下,输入shape \((*, C \times r^2, H, W)\) ,输出shape \((*, C, H \times r, W \times r)\)\(r\) 是缩小因子。 \(*\) 是大于等于0的维度。

说明

Ascend上输入Tensor的维度要小于7。

参数:
  • upscale_factor (int) - 打乱输入Tensor的因子,是正整数。 upscale_factor 是上面提到的 \(r\)

输入:
  • input (Tensor) - Tensor,shape为 \((*, C \times r^2, H, W)\) 。输入Tensor的维度需要大于2,并且倒数第三维length可以被 upscale_factor 的平方整除。

输出:
  • output (Tensor) - Tensor,shape为 \((*, C, H \times r, W \times r)\)

异常:
  • ValueError - upscale_factor 不是正整数。

  • ValueError - 输入 input 倒数第三维度的length不能被 upscale_factor 的平方整除。

  • ValueError - input 维度小于3。

  • TypeError - input 不是Tensor。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore as ms
>>> import numpy as np
>>> input_x = np.arange(3 * 2 * 8 * 4 * 4).reshape((3, 2, 8, 4, 4))
>>> input_x = ms.Tensor(input_x, ms.dtype.int32)
>>> pixel_shuffle = ms.nn.PixelShuffle(2)
>>> output = pixel_shuffle(input_x)
>>> print(output.shape)
(3, 2, 2, 8, 8)