Pytorch学习12_最大池化的使用

输入图像

复制代码
import torch
from torch import nn

input=torch.tensor([[1,2,0,3,1],
                    [0,1,2,3,1],
                    [1,2,1,0,0],
                    [5,2,3,1,1],
                    [2,1,0,1,1]
                    ])
input=torch.reshape(input,(-1,1,5,5))#二维张量转换为一个四维张量。(batch_size, channels, height, width)

print(input.shape)

ceil_mode=True

复制代码
import torch
from torch import nn
from torch.nn import MaxPool2d

input=torch.tensor([[1,2,0,3,1],
                    [0,1,2,3,1],
                    [1,2,1,0,0],
                    [5,2,3,1,1],
                    [2,1,0,1,1],
                    ],dtype=torch.float32)
input=torch.reshape(input,(-1,1,5,5))#二维张量转换为一个四维张量。(batch_size, channels, height, width)

# print(input.shape)

class Xuexu(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool=MaxPool2d(kernel_size=3,ceil_mode=True)

    def forward(self,input):
        output=self.maxpool(input)
        return output

xuexu=Xuexu()
output=xuexu(input)
print(output)

ceil_mode=False

复制代码
import torch
from torch import nn
from torch.nn import MaxPool2d

input=torch.tensor([[1,2,0,3,1],
                    [0,1,2,3,1],
                    [1,2,1,0,0],
                    [5,2,3,1,1],
                    [2,1,0,1,1],
                    ],dtype=torch.float32)
input=torch.reshape(input,(-1,1,5,5))#二维张量转换为一个四维张量。(batch_size, channels, height, width)

# print(input.shape)

class Xuexu(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool=MaxPool2d(kernel_size=3,ceil_mode=False)

    def forward(self,input):
        output=self.maxpool(input)
        return output

xuexu=Xuexu()
output=xuexu(input)
print(output)

输出查看

复制代码
import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import dataset, DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset =torchvision.datasets.CIFAR10("../dataset",train=False,download=True,
                                      transform=torchvision.transforms.ToTensor())

dataloader=DataLoader(dataset,batch_size=64)

class Xuexu(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool1=MaxPool2d(kernel_size=3,ceil_mode=False)

    def forward(self,input):
        output=self.maxpool1(input)
        return output

xuexu=Xuexu()
writer=SummaryWriter("./logs_maxpool")
step=0
for data in dataloader:
    imgs,targets=data
    writer.add_images("input",imgs,step)
    output=xuexu(imgs)
    writer.add_images("output",output,step)
    step=step+1

writer.close()

终端运行

tensotboard --logdir="logs_maxpool"

点击蓝色的链接

可以看到最大池化的效果,类似于马赛克。

最大池化是一种常用的池化操作,它的主要作用包括:

  1. 特征降维: 最大池化通过在局部区域内选择最大值来减小图像或特征图的空间尺寸。这有助于减少模型的计算复杂性和参数数量,从而加速训练和降低过拟合的风险。

  2. 平移不变性: 最大池化在一定程度上提供平移不变性,即对于输入的轻微平移,最大池化仍然能够提取相同的关键特征。这对于图像识别等任务是有益的,因为图像中的目标可能出现在不同的位置。

  3. 特征提取: 最大池化有助于保留图像或特征图中的重要特征,因为在每个池化窗口中,只选择最显著的特征值。这有助于模型更专注于图像中最重要的信息。

总的来说,最大池化是一种常见的操作,用于在深度学习中对输入数据进行下采样和特征提取,以改善模型的计算效率和泛化能力。

参考

【PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】】 https://www.bilibili.com/video/BV1hE411t7RN/?p=19\&share_source=copy_web\&vd_source=be33b1553b08cc7b94afdd6c8a50dc5a

相关推荐
广州灵眸科技有限公司5 分钟前
瑞芯微(EASY EAI)RV1126B 语音识别
人工智能·语音识别
忧郁的橙子.7 分钟前
26期_01_Pyhton判断语句
python
2501_942191778 分钟前
基于YOLOv5-RepHGNetV2的青椒目标检测方法研究原创
人工智能·yolo·目标检测
快乐小胡!12 分钟前
【自动化测试】Selenium选择/定位元素的基本方法
python·selenium·测试工具
wukangjupingbb19 分钟前
从英矽智能与晶泰科技在港股的上市看目前中国AI制药研发的趋势以及竞争态势
人工智能·科技
Jack___Xue25 分钟前
LLM知识随笔(一)--Transformer
人工智能·深度学习·transformer
高洁0131 分钟前
数字孪生与数字样机的技术基础:建模与仿真
python·算法·机器学习·transformer·知识图谱
喵手31 分钟前
Python爬虫零基础入门【第二章:网页基础·第4节】新手最常栽的坑:编码、时区、空值、脏数据!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·python爬虫编码时区·爬虫编码时区
AC赳赳老秦36 分钟前
Dify工作流+DeepSeek:运维自动化闭环(数据采集→报告生成)
android·大数据·运维·数据库·人工智能·golang·deepseek
Deepoch38 分钟前
Deepoc具身模型:清洁机器人的智能决策引擎
人工智能·机器人·生活·开发板·清洁机器人·具身模型·deepoc