当前位置: 首页 > news >正文

神经网络:池化层

  1. 神经网络 池化操作

    下采样:减少特征数量

    先看池化操作:

    其中ceil_mode设置成True和False池化区别:

    在这个例子当中:ceil_mode=True表示边缘不满3x3的部分也会被池化,False表示边缘不满3x3的部分不会采样

    code:

    import torch
    from torch import nn
    from torch.nn import MaxPool2dinput = 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)
    #这里dtype为float是因为maxpool2d只能处理float类型的数据input = torch.reshape(input,(-1,1,5,5))
    print(input.shape)class Net(nn.Module):def __init__(self):super(Net,self).__init__()#ceil_mode=True表示边缘不满3x3的部分也会被池化#kernel_size=3 默认是卷积核的大小self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)self.maxpool2 = MaxPool2d(kernel_size=3,ceil_mode=False)def forward(self,input):#output = self.maxpool1(input)output = self.maxpool2(input)return outputnet = Net()
    output = net(input)
    print(output)
    

    ceil_mode=True:

    在这里插入图片描述

    ceil_mode=False:

    在这里插入图片描述

  2. 神经网络 池化层
    这里需要先看这篇博客:

https://blog.csdn.net/whdehcy/article/details/149486555?fromshare=blogdetail&sharetype=blogdetail&sharerId=149486555&sharerefer=PC&sharesource=whdehcy&sharefrom=from_link

是讲卷积层的

现在将上一步的卷积得到的特征图作为池化的输入

    pool_output = poolnet(conv_output)writer.add_images('pool_output',pool_output,cnt)

只需要添加一下池化的操作

class poolNet(nn.Module):def __init__(self):super(poolNet,self).__init__()#ceil_mode=True表示边缘不满3x3的部分也会被池化#kernel_size=3 默认是卷积核的大小self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)self.maxpool2 = MaxPool2d(kernel_size=3,ceil_mode=False)def forward(self,input):output = self.maxpool1(input)#output = self.maxpool2(input)return outputpoolnet = poolNet()

完整版代码:

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d, MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from torchvision.datasets import ImageFolder
from torchvision import transforms#数据预处理
transform = transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor(),transforms.Normalize(mean = [0.5,0.5,0.5],std = [0.5,0.5,0.5])
])#加载数据集
folder_path = '../images'
dataset = ImageFolder(folder_path,transform=transform)
dataloader = DataLoader(dataset,batch_size=1)#卷积
class convNet(nn.Module):def __init__(self):#调用父类nn.Module的构造函数super(convNet,self).__init__()self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)def forward(self,x):x = self.conv1(x)return xconvnet = convNet()#池化
class poolNet(nn.Module):def __init__(self):super(poolNet,self).__init__()#ceil_mode=True表示边缘不满3x3的部分也会被池化#kernel_size=3 默认是卷积核的大小self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)self.maxpool2 = MaxPool2d(kernel_size=3,ceil_mode=False)def forward(self,input):output = self.maxpool1(input)#output = self.maxpool2(input)return outputpoolnet = poolNet()writer = SummaryWriter('../logs')cnt = 0
for data in dataloader:img,label = dataprint(img.shape)conv_output = convnet(img)print(conv_output.shape)writer.add_images('input',img,cnt)conv_output = torch.reshape(conv_output,(-1,3,222,222))writer.add_images('conv_output',conv_output,cnt)pool_output = poolnet(conv_output)writer.add_images('pool_output',pool_output,cnt)cnt = cnt + 1writer.close()

卷积:

在这里插入图片描述

池化:
在这里插入图片描述

http://www.xdnf.cn/news/1157635.html

相关文章:

  • jQuery多库共存
  • SQL189 牛客直播各科目同时在线人数
  • c/c++-memory-management
  • 【PTA数据结构 | C语言版】是不是堆
  • SpringBoot集成Skywalking链路跟踪
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 59(题目+回答)
  • 奥比中光双目摄像头实现物品抓取的机器人系统
  • 【Lua】多脚本引用
  • 数据结构 | 栈:构建高效数据处理的基石
  • Docker Compose
  • LeetCode 198 打家劫舍 LeetCode 213.打家劫舍II
  • Kotlin函数式接口
  • 力扣:动态规划java
  • kotlin Flow快速学习2025
  • 算法训练营DAY36 第九章 动态规划part04
  • Request和Response相关介绍
  • 数字图像处理(四:图像如果当作矩阵,那加减乘除处理了矩阵,那图像咋变):从LED冬奥会、奥运会及春晚等等大屏,到手机小屏,快来挖一挖里面都有什么
  • 《计算机网络》实验报告三 UDP协议分析
  • STM32-第八节-TIM定时器-4(编码器接口)
  • C++虚函数易错点整理
  • Python dataclass 高阶用法与技巧
  • springboot-profile
  • Direct3D 11学习(一)
  • 数学专业转行做大数据容易吗?需要补什么?
  • Web服务压力测试工具hey学习一:使用方法
  • 如何解决pip安装报错error subprocess-exited-with-error问题
  • 力扣面试150题--搜索插入位置
  • 30天打牢数模基础-灰色预测模型讲解
  • BLIP、InternVL Series(下)
  • Eureka+LoadBalancer实现服务注册与发现