神经网络 torch.nn---Pooling layers(nn.MaxPool2d)

torch.nn — PyTorch 2.3 documentation

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io)

nn.MaxPool2d

class torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

参数介绍

  • kernel_size(int or tuple) - max pooling的窗口大小。用于设置一个取最大值的窗口,如设置为3,那么会生成一个3×3的窗口
  • stride(int or tupleoptional) - 默认值为kernel_size,步幅,和卷积层中的stride一样
  • padding(int or tupleoptional) - 填充图像,默认填充的值为0
  • dilation(int or tupleoptional) – 一个控制窗口中元素步幅的参数。空洞卷积,即卷积核之间的距离。如卷积核的尺寸为3×3,dilation为1,那么返回一个大小为5×5的卷积核,卷积核每个元素与上下左右的元素之间空一格
  • return_indices - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助。一般用的很少
  • ceil_mode - 默认为False。为True时,输出的shape使用ceil格式(向上取整,即进一);为False时,输出的shape使用floor格式(向下取整)。

nn.MaxPool2d的作用

对于输入信号的输入通道,提供2维最大池化(max pooling)操作

如果输入的大小是(N,C,H,W),那么输出的大小是(N,C,H_out,W_out)和池化窗口大小(kH,kW)的关系是:

如果padding不是0,会在输入的每一边添加相应数目0
dilation用于控制内核点之间的距离,详细描述在这里

参数kernel_sizestridepaddingdilation数据类型: 可以是一个int类型的数据,此时卷积height和width值相同; 也可以是一个tuple数组(包含来两个int类型的数据),第一个int数据表示height的数值,tuple的第二个int类型的数据表示width的数值

操作前后的图像大小计算公式

参数说明:

  • N: 图像的batch_size

  • C: 图像的通道数

  • H: 图像的高

  • W: 图像的宽

计算过程:

shape:
input: (N,C_in,H_in,W_in)
output: (N,C_out,H_out,W_out)or(C_out,H_out,W_out)

看论文的时候,有些比如像padding这样的参数不知道,就可以用这条公式去进行推导

最大池化操作举例

假设有一个5×5的图像和一个3×3的池化核(kenel_size=3),如下图。池化过程就是将池化核与图像进行匹配。下面介绍最大池化的具体操作。

首先用池化核覆盖图像,如下图。然后取到最大值,作为一个输出。

上图为第一次最大池化操作,最大值为2。将2作为一个输出,如下图。

由于本例未对stride进行设置,故stride采取默认值,即stride=kernel_size=3,池化核移动如下图(移动方式与上上文中提到的卷积核移动方式相同,不再赘述)。由于池化核移动已超出范围,要不要取这3×2部分的最大值,取决于call_mode的值,若ceil_mode=True,则取最大值,即输出3;若ceil_mode=False,则不取这部分的值,即这一步不进行池化操作。

假设ceil_mode=True,经过最大池化操作后,输出的结果如下图。

假设ceil_mode=False,经过最大池化操作后,输出的结果如下图。

最大池化的程序代码

示例1
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)
print(input.shape)

input = torch.reshape(input, (-1, 1, 5, 5))

print(input.shape)

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

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

tudui = Tudui()
output = tudui(input)
print(output)

输出

示例2
import torchvision
import torch
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(root='./dataset', train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)
dataloader = DataLoader(dataset, batch_size=64)

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

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

tudui = Tudui()
writer = SummaryWriter('logs')

step = 1
for data in dataloader:
    imgs, target= data
    writer.add_images("input", imgs, step)
    output = tudui(imgs)
    writer.add_images("output", output, step)
    step += 1

writer.close()

对比输入输出,可以看出图像更糊了

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

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

相关文章

智慧互联网医院系统的技术架构与实现

随着信息技术的迅猛发展,智慧互联网医院系统成为现代医疗服务的重要组成部分。该系统融合了多种先进技术,旨在提升医疗服务的效率和质量,优化患者体验。本文将深入探讨智慧互联网医院系统的技术架构及其实现方法,并提供相关代码示…

鸢尾花分类和手写数字识别(K近邻)

鸢尾花分类 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import pandas as pd import mglearn# 加载鸢尾花数据集 iris load_iris() X_train, X_test, y_train, y_test train_test_split(iris.data,iris.target,test_siz…

Xsens动作捕捉系统:角色动画制作与运动分析领域的先进工具

随着传感器技术的不断进步,动作捕捉技术现在更加趋向于民用化,拥有价格优势的惯性动作捕捉系统现在更多的出现在独立动画工作室与国内外多所高校的实际项目应用中。 凭借无场地限制、价格优惠、校准使用方便、数据采集精确等多项优势,Xsens惯…

特征交叉系列:DCN-Mix 混合低秩交叉网络理论和实践

DCN-Mix和DCN-V2的关系 DCN-Mix(a mixture of low-rank DCN)是基于DCN-V2的改进版,它提出使用矩阵分解来降低DCN-V2的时间空间复杂度,又引入多次矩阵分解来达到类似混合专家网络MOE的效果从而提升交叉层的表征能力,若读者对DCN-V2不甚了解可…

Faiss assertion ‘err == cudaSuccess‘ failed in void faiss::gpu:runL2Norm()

Faiss assertion ‘err cudaSuccess’ failed in void faiss::gpu:runL2Norm(). details:CUA error 209 no kernel image is available for execution on the device 本人使用的ubuntu 22.04系统,conda的环境。使用pip安装faiss-gpu出现的问题。 pip install fai…

38页 | 工商银行大数据平台助力全行数字化转型之路(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 工商银行大数据平台 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方案&a…

【C++】list的基本使用

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读 1. list基本介绍 2. list构造函数 3. list迭代器 4. list容量 5. list的修改操作 6. list排序 导读 今天我们来正式…

企业该如何选择GPU云服务器配置?

无论是个人开发者还是企业用户,对于如何选购最佳的云服务器配置,都是比较头疼与纠结的。因为GPU云服务器的配置众多,各种组合有各自优势与用途,很难一下子做出决策。接下来,我们来简单分析下各配置应该怎么选购。 1、地…

k8s和deepflow部署与测试

Ubuntu-22-LTS部署k8s和deepflow 环境详情: Static hostname: k8smaster.example.net Icon name: computer-vm Chassis: vm Machine ID: 22349ac6f9ba406293d0541bcba7c05d Boot ID: 605a74a509724a88940bbbb69cde77f2 Virtualization: vmware Operating System: U…

红海边的这座城,如何点亮人类可持续发展之梦

导读:造一座100%清洁能源供电的城市? 城市是人类最伟大的成就之一,数千年来城市承载了人类文明的跃迁。21世纪,在人类追求可持续发展的蓝图中,城市有了新的使命。 容纳全球50%以上人口,但碳排放量超过70%的…

植物大战僵尸杂交版 2.0 下载及配置图文教程

文章目录 Part.I IntroductionPart.II 下载Chap.I 下载地址Chap.II 网盘直链下载 Part.III 配置Chap.I 解压与安装Chap.II 加载存档Chap.III 其他设置 Reference Part.I Introduction 最近看大仙儿直播植物大战僵尸,觉得挺好玩的。它大概长这样: 就上网…

怎么取消Intellij IDEA中的项目和Git仓库的关联

这篇文章分享一种最简单的方法,取消已经开启代码控制的项目与git代码仓库的关联。 打开项目的位置,然后点击文件管理器上方的查看选项卡,勾选【隐藏的项目】。 然后可以看到项目的文件夹下显示了一个隐藏的.git文件夹,直接把这个.…

英伟达Blackwell芯片正式投入生产 | 百能云芯

在近日的一场公开活动中,英伟达公司的创始人和首席执行官黄仁勋正式宣布,备受瞩目的Blackwell芯片已成功投产。 黄仁勋在讲话中强调,英伟达将继续坚持其数据中心规模、一年节奏、技术限制、一个架构的战略方向。这意味着英伟达将继续运用业界…

一个简单好用的 C# Animation Easing 缓动动画类库

文章目录 1.类库说明2.使用步骤2.1 创建一个Windows Form 项目2.2 安装类库2.3 编码2.4 效果 3.该库支持的缓动函数4.代码下载 1.类库说明 App.Animations 类库是一个很精炼、好用的 csharp easing 动画库 基于 net-standard 2.0提供 Fluent API,写代码非常舒服。…

项目3:从0开始的RPC框架

一. 基本概念 区别于传统的增删改查型的业务项目,本项目侧重于开发框架,并且涉及架构方面的技术知识点。 1. 什么是RPC? 远程过程调用(Remote Procedure Call),是一种计算机通信协议,它允许程…

02眼电识别眼动--软件V1.0

对应视频链接点击直达 01项目点击下载,可直接运行(含数据库) 02眼电识别眼动--软件V1.0 对应视频链接点击直达构思结语其他以下是废话 构思 对于软件,主要就是接收数据、处理数据、储存和显示数据。 这是主要页面,…

爬取股票数据python

最近在搜集数据要做分析,一般的数据来源是一手数据(生产的)和二手数据(来自其他地方的)。 今天我们爬取同花顺这个网站的数据。url为:https://data.10jqka.com.cn/ipo/xgsgyzq/ 话不多说直接上代码。有帮…

QT项目实战: 五子棋小游戏

目录 内容介绍 一.添加头文件 二.画棋盘 1.宏定义 2.棋盘 三.画棋子 四.获取棋子摆放位置 五.判断棋子存在 六.判断胜利 1.变量定义和初始化 2.检查获胜条件 3.游戏结束处理 七.重绘 八.效果展示 九.代码 1.mainwindow.h 2.mainwindow.cpp 3.chessitem.h 4…

部署kubesphere报错

安装kubesphere报错命名空间terminted [rootk8smaster ~]# kubectl apply -f kubesphere-installer.yaml Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16, unavailable in v1.22; use apiextensions.k8s.io/v1 CustomResourceDefini…

【Oracle篇】rman全库异机恢复:从单机环境到RAC测试环境的转移(第五篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…