Pytorch之神经网络最大池化层

news2024/12/23 4:19:34

池化层(Pooling layer)是深度学习神经网络中常用的一种层类型,它的作用是对输入数据进行降采样(downsampling)操作。池化层通过在输入数据的局部区域上进行聚合操作,将该区域的信息压缩成一个单一的值,从而减少数据的维度。

池化层的主要作用如下:

  1. 特征提取:池化层可以通过保留输入数据的主要特征,提取出对模型有用的信息。通过对输入数据进行降采样,池化层可以减少模型中的参数数量,从而降低模型的复杂度,提高计算效率。

  2. 平移不变性:池化层对输入数据的平移不变性具有一定的保持作用。即,无论输入数据在图像中的位置如何变化,池化层都可以提取出相似的特征表示。这对于处理图像中的物体平移、旋转等变换具有一定的鲁棒性。

  3. 降低过拟合:池化层可以通过降低输入数据的空间维度,减少模型的参数数量,从而有助于减少过拟合的风险。过拟合是指模型在训练数据上表现很好,但在未见过的测试数据上表现较差的现象。通过降低数据的维度,池化层可以减少模型的复杂度,提高模型的泛化能力。

在PyTorch中,最大池化层可以通过torch.nn.MaxPool2d类来实现。这个类用于实现二维最大池化操作,常用于卷积神经网络中。

下面是一个使用最大池化层的简单示例:

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))


class Demo(nn.Module):
    def __init__(self):
        super(Demo, self).__init__()
        self.maxpool=MaxPool2d(kernel_size=3,ceil_mode=True)
        #kernel_size=3形成一个3x3的池化核,默认步长为池化核的大小,ceil_mode=True:决定是否取不足池化核的值
    def forward(self,input):
        output=self.maxpool(input)
        return output
maxpool=Demo()
output=maxpool(input)
print(output)

输出结果为:

tensor([[[[2., 3.],
          [5., 1.]]]])

首先导入了torchtorch.nn模块。然后,创建了一个最大池化层maxpool,指定了池化核的大小为3,并设置了步幅。接下来,生成了一个形状为(1, 1, 5, 5)的输入张量input,其中1表示批大小,1表示通道数,5表示高度,5表示宽度。最后,使用最大池化层对输入张量进行池化操作,并打印出输入张量和池化后的输出张量。

在这个示例中,最大池化层将输入张量按3x3的池化核进行最大池化操作,并将结果输出。输出张量的形状为(1, 1, 2, 2),其中2表示池化后的高度和宽度。

接下来进行数据集的实战:

# 最大池化层
import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset=torchvision.datasets.CIFAR10('../Data',train=True,transform=torchvision.transforms.ToTensor())
dataloader=DataLoader(dataset,batch_size=64)

class Demo(nn.Module):
    def __init__(self):
        super(Demo, self).__init__()
        self.maxpool=MaxPool2d(kernel_size=3,ceil_mode=True)
        #kernel_size=3形成一个3x3的池化核,默认步长为池化核的大小,ceil_mode=True:决定是否取不足池化核的值
    def forward(self,input):
        output=self.maxpool(input)
        return output
maxpool=Demo()
step=0
writer=SummaryWriter('logs_Maxpool')
for data in dataloader:
    imgs,targets=data
    writer.add_images('input',imgs,step)
    output=maxpool(imgs)
    writer.add_images('output',output,step)
    step=step+1
writer.close()

其运行结果:

常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化选取输入局部区域中的最大值作为输出,而平均池化计算输入局部区域的平均值作为输出。

池化层在深度学习神经网络中扮演着重要的角色,它可以提取特征、降低模型复杂度、增加模型的鲁棒性,并有助于减少过拟合的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1498804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可视化图表:柱坐标系与对应图表详解

一、柱坐标系及其构成 柱状坐标系是一种常见的可视化图表坐标系,用于显示柱状图(也称为条形图)的数据。它由两个相互垂直的轴组成,一个是水平轴(X轴),另一个是垂直轴(Y轴&#xff0…

大型c++项目在linux下如何调试?

大型c项目在linux下如何调试? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Linux 的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&#xff01…

几个市场主流伦敦银交易系统简介

很多人在伦敦银交易中都希望建立一个交易系统,依靠这个系统,我们在市场中能够建立稳定盈利的基础。下面我们就来简单地介绍几个市场主流的伦敦银交易系统。 均线交易系统。这是很多人使用的伦敦银交易系统,一般适用于趋势行情中。均线交易系统…

20240307-2-前端开发校招面试问题整理HTML

前端开发校招面试问题整理【2】——HTML 1、HTML 元素&#xff08;element&#xff09; Q&#xff1a;简单介绍下常用的 HTML 元素&#xff1f; 块状标签&#xff1a;元素独占一行&#xff0c;可指定宽、高。 常用的块状元素有&#xff1a; <div>、<p>、<h1&…

【大模型】Hugging Face下载大模型的相关文件说明

Hugging Face下载大模型文件说明 1.前言 ​ 上图是毛毛张在HuggingFace的官网上的ChatGLM-6B大模型的所有文件,对于初学者来说,对于上面的文件是干什么的很多小伙伴是很迷糊的,根本不知道是干什么的,毛毛张接下来将简单讲述一下上面的每个文件的作用。 2.文件说明 在Hug…

teknoparrot命令行启动游戏

官方github cd 到teknoparrot解压目录 cd /d E:\mn\TeknoParrot2_cp1\GameProfiles启动游戏 TeknoParrotUi.exe --profile游戏配置文件游戏配置文件位置/UserProfiles,如果UserProfiles文件夹里没有那就在/GameProfiles,在配置文件里将游戏路径加入之间,或者打开模拟器设置 …

东南亚媒体发稿案例分析 海外媒体宣传首选CloudNEO

近年来&#xff0c;东南亚地区以其快速发展的经济和多元化的文化成为全球企业竞相进军的热门目的地之一。在这样一个竞争激烈的市场中&#xff0c;有效的媒体宣传成为企业拓展业务、树立品牌形象的重要手段。本文将以东南亚媒体发稿案例为例&#xff0c;分析如何利用CloudNEO提…

HBM研究框架:突破“内存墙”,封装新突破

本文来自“走进芯时代&#xff1a;HBM迭代&#xff0c;3D混合键合成设备材料发力点”。 报告概述 HBM突破“内存墙”,实现高带宽高容量&#xff0c;成为Al芯片最强辅助&#xff0c;我们认为HBM将持续迭代&#xff0c;1/0口数量以及单1/0口速率将逐渐提升&#xff0c;HBM3以及H…

devops-Jenkins【内网环境部署及插件安装】

1、准备工作 外网Linux机器一台&#xff0c;内网Linux机器一台。硬件环境要求&#xff1a;至少1GB的可用内存空间&#xff0c;至少50GB的可用硬盘空间。软件环境需求&#xff1a;需要安装好Java8&#xff0c;Java的运行环境JRE1.8或者Java的开发工具包JDK1.8都可以。 2、外网安…

Linux - 反弹Shell

概念 Shell 估计大家都不陌生&#xff0c;简单来说&#xff0c;就是实现用户命令的接口&#xff0c;通过这个接口我们就能实现对计算机的控制&#xff0c;比如我们常见的 ssh 就是执行的 Shell 命令实现对远程对服务器的控制。 那反弹 Shell &#xff08; Reverse Shell&…

ChatGPT/GPT4科研技术应用与AI绘图(包含Claude3、Gemini、Sora、GPTs中大模型的最新技术)

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

【数据结构】二、线性表:5.静态链表的定义及其基本操作(定义、初始化、插入、查找、删除、遍历、长度、特点)

文章目录 5.静态链表5.1定义5.2初始化5.3插入5.4查找5.5删除5.6遍历5.7长度5.8特点 5.静态链表 静态链表是使用数组来模拟链表结构的一种数据结构&#xff0c;用数组的方式实现的链表。 它与传统链表的区别在于&#xff0c;静态链表使用数组保存节点&#xff0c;每个节点包括…

Spark 搭建模式(本地、伪分布、全分布模式)

Spark搭建模式 Standalone模式 环境搭建 1.伪分布式 #1.进入$SPARK_HOME/conf [rootmaster ~] cd $SPARK_HOME/conf#2.拷贝spark-env.sh.template [rootmaster conf] cp spark-env.sh.template spark-env.sh [rootmaster conf] vi spark-env.sh# Options for the daemons u…

window mysql 安装出现的问题

1.安装到最后时&#xff0c;报错&#xff1a;authentication_string doesnt have a default value 解决办法&#xff1a; 1.不要关掉该页面&#xff0c;点击skip。 然后单击 back 回退到如下界面 2.去掉 Enable Strict Mode。 不要勾选 2. 最后一步&#xff1a;Start Servic…

变频器学习

西门子变频器 SINAMICS V20 入门级变频器 SINAMICS G120C

SpringMVC实用技术

1.校验框架 1.表单校验框架入门 表单校验的重要性 数据可以随意输入&#xff0c;导致错误的结果。表单校验保障了数据有效性、安全性 表单校验分类 校验位置&#xff1a; 客户端校验 服务端校验 校验内容与对应方式&#xff1a; 格式校验 客户端&#xff1a;使用Js技术…

Android fragment的使用案例

效果图&#xff1a;两个点击事件&#xff0c;显示不同的fragment布局 默认是如下图&#xff0c;点击页面一也如下图 点击页面二如下图&#xff1a; Android Fragment的生命周期是与其所在的Activity紧密相关的。当一个Fragment被添加到Activity中时&#xff0c;它将经历一系列…

挑战杯 基于深度学习的水果识别 设计 开题 技术

1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/pos…

YOLOv9(2):YOLOv9网络结构

1. 前言 本文仅以官方提供的yolov9.yaml来进行简要讲解。 讲解之前&#xff0c;还是要做一些简单的铺垫。 Slice层不做任何的操作&#xff0c;纯粹是做一个占位层。这样一来&#xff0c;在parse_model时&#xff0c;ch[n]可表示第n层的输出通道。 Detect和DDetect主要区别还…

Django cookie 与 session

Django cookie 与 session Cookie 是存储在客户端计算机上的文本文件&#xff0c;并保留了各种跟踪信息。 识别返回用户包括三个步骤&#xff1a; 服务器脚本向浏览器发送一组 Cookie。例如&#xff1a;姓名、年龄或识别号码等。浏览器将这些信息存储在本地计算机上&#xf…