PixelShuffle

paddle.nn.PixelShuffle ( upscale_factor, data_format=’NCHW’, name=None ) [源代码]

该算子将一个形为[N, C, H, W]或是[N, H, W, C]的Tensor重新排列成形为 [N, C/r**2, H*r, W*r]或 [N, H*r, W*r, C/r**2] 的Tensor。这样做有利于实现步长(stride)为1/r的高效sub-pixel(亚像素)卷积。详见Shi等人在2016年发表的论文 Real Time Single Image and Video Super Resolution Using an Efficient Sub Pixel Convolutional Neural Network

  1. 给定一个形为 x.shape = [1, 9, 4, 4] 4-D张量
  2. 设定:upscale_factor=3
  3. 那么输出张量的形为:[1, 1, 12, 12]

参数

  • upscale_factor (int):增大空间分辨率的增大因子

  • data_format (str,可选): 数据格式,可选:”NCHW”或”NHWC”,默认:”NCHW”

  • name (str,可选): 操作的名称(可选,默认值为None)。更多信息请参见 Name

形状

  • x (Tensor): 默认形状为(批大小,通道数,高度,宽度),即NCHW格式的4-D Tensor或NHWC格式的4-DTensor。 其数据类型为float32, float64.

  • output (Tensor): 默认形状为(批大小,通道数,输出特征高度,输出特征宽度),即NCHW格式或NHWC的4-D Tensor。 其数据类型与输入相同。

返回

计算PixelShuffle的可调用对象

代码示例

  1. import paddle
  2. import paddle.nn as nn
  3. x = paddle.rand((2, 9, 4, 4))
  4. pixel_shuffle = nn.PixelShuffle(3)
  5. out = pixel_shuffle(x)
  6. print(out.shape)
  7. # (2, 1, 12, 12)