Pytorch: Pooling layers详解

Pooling layers属于torch.nn包下
https://pytorch.org/docs/stable/nn.html#pooling-layers
在这里插入图片描述
NOTE: 1d和2d和3d使用的方式都是相同的;本质的区别就在于操作的对象是多少维度的,1d是对一维的向量进行操作,2d是对二维的矩阵进行操作,3d是对三维的矩阵进行操作。
在这里插入图片描述

import torch.nn as nn

MaxPool

定义

nn.MaxPool1d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
nn.MaxPool3d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

参数
return_indices: 如果为True时,会返回最大值所在的下标位置,可方便后续的在使用torch.nn.MaxUnpool-1/2/3d 上池化操作时根据位置填回原来的位置,其他位置填0。
ceil_mode: 如果为True时,会使用向上取整代替默认的向下取整操作来计算输出的形状
在这里插入图片描述
shape
1D
对一个C×H×W的三维输入Tensor, 池化输出为C×H×N, 即按照H轴逐行对W轴一维最大池化
在这里插入图片描述
2D
对一个B×C×H×W的四维输入Tensor, 池化输出为B×C×M×N, 即按照C轴逐通道对H×W二维平面最大池化
在这里插入图片描述
3D
对一个B×C×D×H×W的五维输入Tensor, 池化输出为B×C×M×N×K, 即按照C轴逐通道对D×H×W三维空间最大池化
在这里插入图片描述
对于2D和3D来说,kernel_size, stride, padding, dilation可以是单个值也可以是一个元组,对应每一个维度的值。
在这里插入图片描述在这里插入图片描述

AdaptiveMaxPool

定义
指定输出的大小,自适应的调节kernel_size,stride, padding得到指定大小的形状

torch.nn.AdaptiveMaxPool1d(output_size, return_indices=False)
torch.nn.AdaptiveMaxPool2d(output_size, return_indices=False)
torch.nn.AdaptiveMaxPool3d(output_size, return_indices=False)

参数
1D
在这里插入图片描述
2D
在这里插入图片描述
3D
在这里插入图片描述
example

#1D
input = torch.randn(1, 64, 8)
m = nn.AdaptiveMaxPool1d(5)
output = m(input)
>>> (1, 64, 5)
#2D
input = torch.randn(1, 64, 8, 9)
m = nn.AdaptiveMaxPool2d((5, 7))
output = m(input)
>>> (1, 64, 5, 7)
#3D
input = torch.randn(1, 64, 8, 9, 10)
m = nn.AdaptiveMaxPool2d((5, 7, 8))
output = m(input)
>>> (1, 64, 5, 7, 8)

AvgPool

定义

nn.AvgPool1d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)
nn.AvgPool2d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None)
nn.AvgPool3d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None)

参数
ceil_mode: 如果为True时,会使用向上取整代替默认的向下取整操作来计算输出的形状
count_include_pad: 当为True时,在计算平均池化操作时将包括padding填充的0,默认是包括的。
在这里插入图片描述
shape
1D
在这里插入图片描述
2D
在这里插入图片描述
3D
在这里插入图片描述

AdaptiveAvgPool

和上述AdaptiveMaxPool用法完成一致,不再赘述
定义

nn.AdaptiveAvgPool1d(output_size)
nn.AdaptiveAvgPool2d(output_size)
nn.AdaptiveAvgPool3d(output_size)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值