PyTorch中的PixelShuffle

感性认识

一般的convolution操作会使feature map变小,
但当我们的 stride=1r<1 stride = 1 r < 1 时,可以让卷积后的feature map变大,这个新的操作叫做sub-pixel convolution,具体原理可以看Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network这篇paper。

定义

该类定义如下:

class torch.nn.PixleShuffle(upscale_factor)

这里的upscale_factor就是放大的倍数。

输入输出的shape

具体一点来说,Pixelshuffle会将shape为 (,r2C,H,W) ( ∗ , r 2 C , H , W ) Tensor给reshape成 (,C,rH,rW) ( ∗ , C , r H , r W ) Tensor。形式化地说,它的输入输出的shape如下:
- Input: (N,Cupscale_factor2,H,W) ( N , C ∗ upscale_factor 2 , H , W )
- Output: (N,C,Hupscale_factor,Wupscale_factor) ( N , C , H ∗ upscale_factor , W ∗ upscale_factor )

其中 N N 代表batch size。

例子

下面举个例子

ps = nn.PixelShuffle(3)# 缩放到三倍,r == 3
input = torch.tensor(1, 9, 4, 4)## r^2 C == 9C == 9,所以C == 1
output = ps(input)
print(output.size())
# 输出为:
# torch.Size([1, 1, 12, 12])

你可能感兴趣的:(机器学习,pytorch,PyTorch学习)