pytorch中的pixelshuffle通道变换

这篇博客介绍了PyTorch中PixelShuffle层的工作原理,它用于上采样输入张量,将(B,r^2*C,H,W)形状的tensor转换为(B,C,rxH,rxW)。通过实例展示了如何使用nn.PixelShuffle(2),解释了通道如何映射到输出通道,并提供了输入和输出tensor的示例,展示了通道的重新排列方式。
摘要由CSDN通过智能技术生成

Pixelshuffle会将shape为(B, r^2*C, H, W)的tensor变成shape为(B, C, rxH, rxW)的tensor。
0-r^2的通道映射为输出的第一个通道,以此类推。如下例子中,前4个通道映射为输出的第一个通道;中间4个通道映射为输出的第二个通道;最后4个通道映射为输出的第三个通道。

>>> import torch
>>> import torch.nn as nn
>>> ps = nn.PixelShuffle(2)
>>> input = torch.randn(1, 12, 2, 2)
>>> input
tensor([[[[ 0.3157,  2.6184],
          [-0.5110, -1.6559]],

         [[ 1.5152, -0.3441],
          [-0.0120, -1.4397]],

         [[ 2.2176,  0.9618],
          [ 0.6247,  0.0955]],

         [[ 0.2620,  1.3558],
          [ 0.9197,  0.8397]],

         [[ 0.5672, -0.0619],
          [ 0.9506,  0.1088]],

         [[ 0.7284, -0.8414],
          [ 0.0192,  0.5332]],

         [[-0.1117,  0.7233],
          [ 0.5228,  0.3788]],

         [[ 1.2299,  0.1291],
          [ 1.4859,  0.5856]],

         [[ 0.8725,  0.4704],
          [ 2.0029,  0.6330]],

         [[-0.3081, -1.5928],
          [ 1.7993,  0.6195]],

         [[ 0.5230,  1.8387],
          [-0.3246, -1.1609]],

         [[-0.6185, -0.0394],
          [ 1.1148, -0.3396]]]])

>>> out = ps(input)
>>> out.shape
torch.Size([1, 3, 4, 4])
>>> out[0,0]
tensor([[ 0.3157,  1.5152,  2.6184, -0.3441],
        [ 2.2176,  0.2620,  0.9618,  1.3558],
        [-0.5110, -0.0120, -1.6559, -1.4397],
        [ 0.6247,  0.9197,  0.0955,  0.8397]])
>>> input[0,0:4]
tensor([[[ 0.3157,  2.6184],
         [-0.5110, -1.6559]],

        [[ 1.5152, -0.3441],
         [-0.0120, -1.4397]],

        [[ 2.2176,  0.9618],
         [ 0.6247,  0.0955]],

        [[ 0.2620,  1.3558],
         [ 0.9197,  0.8397]]])

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值