PyTorch学习笔记之二:池化层

Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版

Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版

Qwen
文本生成
Qwen3

本镜像基于 RTX 4090D 24GB 显存 + CUDA 12.4 + 驱动 550.90.07 深度优化,内置完整运行环境与 Qwen3-32B 模型依赖,开箱即用。


一、池化层

池化层(Pooling Layer):主要用来去掉次要特征,保留主要特征,降低数据维度,减少计算量


池化层的类型主要包括:

  • 最大值池化(Max Pooling)
  • 平均值池化(Average Pooling)
  • 自适应池化(Adaptive Pooling)

二、参数

1. 二维最大值池化层(nn.MaxPool2d)参数

  • 最大值池化层(nn.MaxPool2d) 参数详解:

参数详解

  • kernel_size:池化层移动窗口大小;
  • stride:池化层移动窗口步幅;
  • padding:填充大小;
  • dilation:膨胀大小;
  • return_indices:索引;
  • ceil_mode:模式;

2. 举个例子

  • 对一个张量做一次最大池化:
import torch
import torch.nn as nn

# 创建一个二维最大池化层,池化窗口大小为2x2,步幅为2x2
maxpool2d = nn.MaxPool2d(    
    kernel_size=2, # 池化层移动窗口大小
    stride=2, # 池化层移动窗口步幅
    #padding=0, # 填充大小
    #dilation=1, # 膨胀大小
    #return_indices=False, # 是否返回最大池化元素的索引
    #ceil_mode=False, # 是否使用向上取整的方式计算输出大小
    )

print("-"*100)
print(f'最大值池化参数: {maxpool2d}') # 打印池化层信息

# 输入一个[1, 1, 4, 4]张量,其中1表示batch_size,1表示通道数,4x4表示输入图像的大小
input = torch.tensor([[[[1, 2, 3, 4],
                        [5, 6, 7, 8],
                        [9, 10, 11, 12],
                        [13, 14, 15, 16]]]])

# 进行池化操作
output = maxpool2d(input) # 池化操作

print("-"*100)
print(f'input shape: {input.shape}') # 打印输入数据的形状
print(f'output shape: {output.shape}') # 打印输出数据的形状

print("-"*100)
print(f'input: {input}') # 打印输入数据
print(f'output: {output}') # 打印输出数据
print("-"*100)
  • 打印输出结果:
----------------------------------------------------------------------------------------------------
最大值池化参数: MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
----------------------------------------------------------------------------------------------------
input shape: torch.Size([1, 1, 4, 4])
output shape: torch.Size([1, 1, 2, 2])
----------------------------------------------------------------------------------------------------
input: tensor([[[[ 1,  2,  3,  4],
          [ 5,  6,  7,  8],
          [ 9, 10, 11, 12],
          [13, 14, 15, 16]]]])
output: tensor([[[[ 6,  8],
          [14, 16]]]])
----------------------------------------------------------------------------------------------------

3. 代码解释

  • 输入一个是(1,1,4,4)的张量,经过nn.MaxPool2d(2, 2)最大值池化后,输出变成一个(1,1,2,2)的张量。

在这里插入图片描述

由于池化层移动窗口大小kernel_size=2池化层移动窗口步幅stride=2,然后去取最大值,简化数据,保留数据主要特征,减少数据计算量

  • 左上:max(1, 2, 5, 6) => 6
  • 右上:max(3, 4, 7, 8) => 8
  • 左下:max(9, 10, 13, 14) => 14
  • 右下:max(11, 12, 15, 16) => 16
  • 动画展示如下:

在这里插入图片描述

4. Shape计算公式

  • 输出图像大小,PyTorch官方提供了计算方法:
    在这里插入图片描述
  • 其中:
    • 池化层移动窗口大小kernel_size=2
    • 池化层移动窗口步幅stride=2
    • 填充大小padding=0
    • 膨胀大小dilation=1
  • 代入:
    • Hout = ⌊ H i n − k e r n e l _ s i z e [ 0 ] s t r i d e [ 0 ] + 1 ⌋ \left \lfloor \frac{H_{in} - kernel\_size[0]}{stride[0]} +1\right \rfloor stride[0]Hinkernel_size[0]+1 = ⌊ 4 − 2 2 + 1 ⌋ \left \lfloor \frac{4 - 2}{2} +1\right \rfloor 242+1 = 2
    • Wout = ⌊ W i n − k e r n e l _ s i z e [ 1 ] s t r i d e [ 1 ] + 1 ⌋ \left \lfloor \frac{W_{in} - kernel\_size[1]}{stride[1]} +1\right \rfloor stride[1]Winkernel_size[1]+1 = ⌊ 4 − 2 2 + 1 ⌋ \left \lfloor \frac{4 - 2}{2} +1\right \rfloor 242+1 = 2

三、总结

池化层一般用在卷积层提取特征之后,去掉图像次要特征,保留图像主要特征,降低数据维度,减少数据计算量。

四、参考

您可能感兴趣的与本文相关的镜像

Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版

Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版

Qwen
文本生成
Qwen3

本镜像基于 RTX 4090D 24GB 显存 + CUDA 12.4 + 驱动 550.90.07 深度优化,内置完整运行环境与 Qwen3-32B 模型依赖,开箱即用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值