PixelUnshuffle¶
将一个形为 \([N, C, H, W]\) 或是 \([N, H, W, C]\) 的 Tensor 重新排列成形为 \([N, r^2C, H/r, W/r]\) 或 \([N, H/r, W/r, r^2C]\) 的 Tensor,这里 \(r\) 是减小空间分辨率的减小因子。这个算子是 PixelShuffle 算子(请参考:PixelShuffle)的逆算子。详见施闻哲等人在 2016 年发表的论文 Real Time Single Image and Video Super Resolution Using an Efficient Sub Pixel Convolutional Neural Network 。
给定一个形为 x.shape = [1, 1, 12, 12] 的 4-D Tensor
设定 downscale_factor = 3
那么输出 Tensor 的形为 [1, 9, 4, 4]
参数¶
downscale_factor (int) – 减小空间分辨率的减小因子。
data_format (str,可选) – 数据格式,可选 NCHW 或 NHWC,默认为 NCHW,即(批大小,通道数,高度,宽度)的格式。
name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
形状¶
x (Tensor) – 形状为 \([N, C, H, W]\) 或 \([N, C, H, W]\) 的 4-D Tensor。
out (Tensor) – 形状为 \([N, r^2C, H/r, W/r]\) 或 \([N, H/r, W/r, r^2C]\) 的 4-D Tensor,这里 \(r\) 就是
downscale_factor
。
代码示例¶
import paddle
import paddle.nn as nn
x = paddle.randn([2, 1, 12, 12])
pixel_unshuffle = nn.PixelUnshuffle(3)
out = pixel_unshuffle(x)
print(out.shape)
# [2, 9, 4, 4]