Pytorch之神经网络最大池化层

池化层(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.mfbz.cn/a/438353.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试题个人总结(面经)

自我介绍 你好,我叫XXX,是今天面试初级蓝队的人员,我毕业于XXXX,专业为网络空间安全,我曾经在XXXXX实习过,有过大概一年左右的工作经验,还有过一定的护网经验,去年在XXX厂商护过网,…

【计算机考研择校】四川大学vs电子科技大学哪个难度更大?

川大在文科,经管方面比科大强,医学在国内都很强。但工科方面特别是电子信息领域明显是科大强于川大。毕竟一个是综合大学,一个是工科大学不可同日而语。 就业上,电子科大在IT领域的社会声誉口碑不错。就业一向都很好。这个多问问…

Swin-UMamba—基于 Mamba 的 UNet 和基于 ImageNet 的预训练—论文精读和代码实践

Swin-UMamba 期刊分析摘要贡献方法Swin-UMamba整体框架1. 基于 Mamba 的 VSS 块2. 集成基于 ImageNet 的预训练3. Swin-UMamba解码器4. Swin-UMamba†:带有基于 Mamba 的解码器的 Swin-UMamba 实验代码实践 可借鉴参考 期刊分析 Swin-UMamba只是名字中含有swin&…

为什么不从独立服务器中转向云或其他方案呢?

传统的专用服务器,如香港服务器租赁、重庆服务器租赁等,是最强大、最稳定的业务托管类型之一。您将获得比任何其他托管计划更多的管理权限和卓越的性能,并且您可以控制整个服务器上的几乎所有内容。 当然,专用服务器也是在线业务…

HTML5:七天学会基础动画网页9

在进行接下来的了解之前我们先来看一下3d的xyz轴,下面图中中间的平面就相当于电脑屏幕,z轴上是一个近大远小的效果。 3d转换属性 transform 2D或3D转换 transform-origin 改变旋转点位置 transform-style 嵌套元素在3D空间如何显 …

Eclipse调试技巧 条件断点 监视

实验代码 import java.util.Scanner;public class Test {// 判断n是否为质数public static boolean isPrime(int n){if (n < 2)return false;for (int i 2; i < n; i){if (n % i 0)return false;}return true;}public static void main(String[] args){Scanner scanne…

类初步认识与对象

一&#xff0c;对于面向对象的认识 Java是一门面向对象的语言&#xff0c;一切都可以称为对象。将一个大象装进冰箱&#xff0c;甭管步骤多复杂&#xff0c;大象便是对象&#xff1b;将牛奶放进冰箱&#xff0c;牛奶便是对象&#xff1b;你我均是对像。 再比如洗一个衣服&…

JavaScript——流程控制(程序结构)

JavaScript——流程控制&#xff08;程序结构&#xff09; 流程控制就是来控制我们的代码按照什么结构顺序来执行。更倾向于一种思想结构。 流程控制分为三大结构&#xff1a;顺序结构、分支结构、循环结构 1、顺序结构 ​ 代码从上往下依次执行&#xff0c;从A到B执行&#x…

Java毕业设计 基于SpringBoot vue 疫苗咨询与预约系统

Java毕业设计 基于SpringBoot vue 疫苗咨询与预约系统 SpringBoot vue 疫苗咨询与预约系统 功能介绍 用户前端&#xff1a;首页 图片轮播 疫苗信息 条件查询 疫苗详情 点我收藏 评论 接种疫苗 疫情资讯 资讯详情 资讯评论 论坛交流 发布帖子 公告信息 公告详情 留言反馈 登录…

arm架构服务器使用Virtual Machine Manager安装的kylin v10虚拟机

本文中使用Virtual Machine Manager安装kylin v10的虚拟机 新建虚拟机 新建虚拟机 选择镜像&#xff0c;下一步 设置内存和CPU&#xff0c;下一步 选择或创建自定义存储&#xff08;默认存储位置的磁盘空间可能不够用&#xff09; 点击管理&#xff0c;打开选择存储卷页…

[linux]shell脚本语言:变量、测试、控制语句以及函数的全面详解

一、shell的概述 1、shell本质是脚本文件&#xff1a;完成批处理。 shell脚本是一种脚本语言&#xff0c;我们只需使用任意文本编辑器&#xff0c;按照语法编写相应程序&#xff0c;增加可执行权限&#xff0c;即可在安装shell命令解释器的环境下执行。shell 脚本主要用于帮助开…

【软件测试】如何申请专利?

一、专利类型 在软件测试领域&#xff0c;可以申请发明专利、实用新型专利和外观设计专利。其中&#xff0c;发明专利是最常见的专利类型&#xff0c;它保护的是软件测试方法、系统和装置等技术方案。 二、申请专利的条件 申请专利需要满足新颖性、创造性和实用性三个条件。…

饮料换购 刷题笔记

直接开个计数器mask 每当饮料现存数-1&#xff1b; cnt;且mask; 一旦mask达到3 饮料现存数 计数器清零3 代码 #include <iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int main(){ int n; …

【AIGC】如何提高Prompt准确度

前言 随着人工智能的迅猛进展&#xff0c;AIGC&#xff08;通用人工智能聊天工具&#xff09;已成为多个行业中不可或缺的自然语言处理技术。Prompt作为AIGC系统的一项关键功能&#xff0c;在工具的有效运作中发挥了举足轻重的作用。本篇文章将深入探讨Prompt与AIGC之间的紧密…

迭代器失效问题(C++)

迭代器失效就是迭代器指向的位置已经不是原来的含义了&#xff0c;或者是指向的位置是非法的。以下是失效的几种情况&#xff1a; 删除元素&#xff1a; 此处发生了迭代器的失效&#xff0c;因为erase返回的是下一个元素的位置的迭代器&#xff0c;所以在删除1这个元素的时候&…

SAP Parallel Accounting(平行分类账业务)配置及操作手册(超详细的说明和测试)

SAP Parallel Accounting(平行分类账业务)配置及操作手册 1、Overview 为了适应不同的会计准则&#xff0c;SAP在新总账中启用了多分类账&#xff0c;&#xff08;其作用简单来说就是&#xff0c;同时一笔记账&#xff0c;会产生多个账套的凭证。&#xff09;分类账可以对应一…

Python之Web开发中级教程----搭建SSH环境

Python之Web开发中级教程----搭建SSH环境 SSH 的全称是 “安全的 Shell(Secure Shell)”&#xff0c;它功能强大、效率高&#xff0c;这个主流的网络协议用于在两个远程终端之间建立连接。让我们不要忘记它名称的“安全”部分&#xff0c;SSH 会加密所有的通信流量&#xff0c…

C语言从入门到精通 第十二章(程序的编译及链接)

写在前面&#xff1a; 本系列专栏主要介绍C语言的相关知识&#xff0c;思路以下面的参考链接教程为主&#xff0c;大部分笔记也出自该教程。除了参考下面的链接教程以外&#xff0c;笔者还参考了其它的一些C语言教材&#xff0c;笔者认为重要的部分大多都会用粗体标注&#xf…

【学习笔记】数据结构与算法06 - 堆:上堆、下堆、Top-K问题以及代码实现

知识来源&#xff1a;https://www.hello-algo.com/chapter_heap/heap/#4 文章目录 2.5 堆2.5.1 堆&#xff08;优先队列2.5.1.1 堆的常用操作 2.5.2 堆的存储与表示2.5.2.1 访问堆顶元素2.5.2.2 入堆时间复杂度 2.5.2.3 堆顶元素出堆时间复杂度 2.5.3 堆的常见应用2.5.4 建堆问…

每日OJ题_牛客_井字棋

目录 牛客_井字棋 解析代码 牛客_井字棋 井字棋__牛客网 解析代码 class Board {public:bool checkWon(vector<vector<int> > board) {// 当前玩家是否胜出&#xff01;&#xff01;&#xff01;不是有玩家胜出int row board.size(), col board[0].size();fo…
最新文章