torch.nn.LPPool2d()的理解

torch.nn.LPPool2d是PyTorch中的一种池化层,它基于p-norm计算,不同于传统的最大池化或平均池化。norm_type参数定义了池化方式,当norm_type=2时,它计算每个窗口内的元素平方和后再开平方根,形成L2池化效果。kernel_size和stride分别定义了窗口大小和步幅,文章通过代码示例展示了LPPool2d如何对输入数据进行处理并输出池化后的结果。
摘要由CSDN通过智能技术生成
torch.nn.LPPool2d(norm_type, kernel_size, stride=None, ceil_mode=False)

 每一个窗口的计算公式为:

       f(X)=\sqrt[p]{\sum_{x\in X}^{}x^{p}}

p即为norm_type,当p=\infty时,相当于最大池化;当p=1时,相当于Sum池化

kernel_size为滑动窗口大小,可以为一个整数,也可以为一个元组

stride为步幅,默认等于kernel_size

图文示例:

也就是说,池化后的数不再是每个滑动窗口里数的最大值或平均值,而是它们的p次方和再开p次根

代码示例:

# 代码输入:
import torch
import torch.nn as nn

x = torch.range(1,120).reshape(2, 3, 4, 5)
print("原始数据:\n",x.shape, '\n', x)

pool = nn.LPPool2d(norm_type=2, kernel_size=2)
print("池化后数据:\n", pool(x))
print(pool(x).shape)
# 输出结果:
原始数据:
 torch.Size([2, 3, 4, 5]) 
 tensor([[[[  1.,   2.,   3.,   4.,   5.],
          [  6.,   7.,   8.,   9.,  10.],
          [ 11.,  12.,  13.,  14.,  15.],
          [ 16.,  17.,  18.,  19.,  20.]],

         [[ 21.,  22.,  23.,  24.,  25.],
          [ 26.,  27.,  28.,  29.,  30.],
          [ 31.,  32.,  33.,  34.,  35.],
          [ 36.,  37.,  38.,  39.,  40.]],

         [[ 41.,  42.,  43.,  44.,  45.],
          [ 46.,  47.,  48.,  49.,  50.],
          [ 51.,  52.,  53.,  54.,  55.],
          [ 56.,  57.,  58.,  59.,  60.]]],


        [[[ 61.,  62.,  63.,  64.,  65.],
          [ 66.,  67.,  68.,  69.,  70.],
          [ 71.,  72.,  73.,  74.,  75.],
          [ 76.,  77.,  78.,  79.,  80.]],

         [[ 81.,  82.,  83.,  84.,  85.],
          [ 86.,  87.,  88.,  89.,  90.],
          [ 91.,  92.,  93.,  94.,  95.],
          [ 96.,  97.,  98.,  99., 100.]],

         [[101., 102., 103., 104., 105.],
          [106., 107., 108., 109., 110.],
          [111., 112., 113., 114., 115.],
          [116., 117., 118., 119., 120.]]]])
池化后数据:
 tensor([[[[  9.4868,  13.0384],
          [ 28.4605,  32.4037]],

         [[ 48.2701,  52.2494],
          [ 68.1909,  72.1803]],

         [[ 88.1476,  92.1412],
          [108.1203, 112.1160]]],


        [[[128.1015, 132.0984],
          [148.0878, 152.0855]],

         [[168.0774, 172.0756],
          [188.0691, 192.0677]],

         [[208.0625, 212.0613],
          [228.0570, 232.0560]]]])
torch.Size([2, 3, 2, 2])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值