Pytorch 之torch.nn初探 池化--Pooling Layers

news2024/12/23 18:53:53

任务描述

本关任务:本关提供了一个Variable 类型的变量x,要求按照条件创建一个Conv2d变量conv,一个MaxPool2d变量pool,对x应用卷积和最大池化操作并赋值给变量outpout_pool,并输出outpout_pool 的大小。

相关知识

Pytorch 中池化分为两种:

  • 最大池化MaxPool
  • 平均池化 AvgPool

MaxPool

MaxPool

描述

MaxPool1d

对输入信号应用1维最大池化操作

MaxPool2d

对输入信号应用2维最大池化操作

MaxPool3d

对输入信号应用3维最大池化操作

下面以MaxPool1d做详细介绍,2维和3维只是在1维的基础上计算了长宽、长宽高的池化。

函数定义:

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

若输入大小为: (N,C,L),则输出大小为:(N,C,Lout)的计算方式如下:

参数说明:

参数名

参数类型

说明

默认值

kernel_size

int或tuple

最大池化窗口的大小

stride

int or tuple, optional

滑动窗口

默认为 kernel_size

padding

int or tuple, optional

在两侧添加隐式零进行填充

dilation

int or tuple, optional

控制窗口中元素步幅的参数

return_indices

boolean ,optional

如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助

ceil_mode

boolean ,optional

如果等于True,计算输出信号大小的时候,会使用向上取整(ceil)

默认的向下取整(floor)

维度: Input: (N,C,L) Output: (N,C,Lout)

应用示例:

# pool of size=3, stride=2
m = nn.MaxPool1d(3, stride=2)
input = Variable(torch.Tensor([[[1,2,3,4,5,6,7]]]))
output = m(input)
print(output.size())

输出结果:

Variable containing:(0 ,.,.) = 3 5 7[torch.FloatTensor of size 1x1x3]

AvgPool

AvgPool

描述

AvgPool1d

对输入信号应用1维平均池化操作

AvgPool2d

对输入信号应用2维平均池化操作

AvgPool3d

对输入信号应用3维平均池化操作

下面以AvgPool1d做详细介绍,2维和3维只是在1维的基础上计算了长宽、长宽高的池化。

函数定义:

torch.nn.AvgPool1d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)

若输入大小: (N,C,L),输出大小(N,C,Lout)和池化窗口大小k的关系是

如果填充不为零,则输入在两侧都会隐式填充零。

参数kernel_size,stride,padding可以是一个int或一个元素的元组。

参数说明:

参数名

参数类型

说明

默认值

kernel_size

int或tuple

最大池化窗口的大小

stride

int or tuple, optional

滑动窗口

默认为 kernel_size

padding

int or tuple, optional

在两侧添加隐式零进行填充

ceil_mode

boolean ,optional

如果等于True,计算输出信号大小的时候,会使用向上取整(ceil)

默认的向下取整(floor)

count_include_pad

boolean ,optional

如果等于True,将在求平均的计算中用0填充

维度

Input: (N,C,L)

Output: (N,C,Lout)

Lout=floor((Lin+2∗paddingkernelsize)/stride+1)

应用示例:

# pool with window of size=3, stride=2
m = nn.AvgPool1d(3, stride=2)
output = m(Variable(torch.Tensor([[[1,2,3,4,5,6,7]]])))
print(output)

输出结果:

Variable containing:(0 ,.,.) = 2 4 6[torch.FloatTensor of size 1x1x3]

编程要求

本关涉及的代码文件为pool.py,本次编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

  • 创建一个in_channels=3, out_channels=32, kernel_size=(3, 3), stride=1, padding=1, bias=True的Conv2d变量conv;
  • 创建一个kernel_size=(2, 2), stride=2的MaxPool2d变量pool;
  • 对x应用卷积和最大池化操作并赋值给变量outpout_pool;
  • 输出 outpout_pool 的大小。
  • 具体请参见后续测试样例。

测试说明

测试过程:

  • 本关涉及的测试文件为pool.py,运行用户填写后的程序判断正误。
  • 测试程序将检测两个方面:是否包含特定的代码行以及程序的输出是否正确,若两个方面均正确则输出下面的预期输出,否则报错。
  • 请注意输出格式及规范。
  • 注意,在声明变量时请按照提示命名,否则将会报错。

以下是测试样例:

测试输入: 预期输出:

Pool output size : torch.Size([10, 32, 14, 14])

Congratulation!

代码实战

import torch
import torch.nn as nn
from torch.autograd import Variable
x = Variable(torch.randn(10, 3, 28, 28))

#/********** Begin *********/

#创建一个in_channels=3, out_channels=32, kernel_size=(3, 3), stride=1, padding=1, bias=True的Conv2d变量conv
conv=nn.Conv2d(3,32,(3,3),1,1,bias=True)

#创建一个kernel_size=(2, 2), stride=2的MaxPool2d变量pool
pool=nn.MaxPool2d((2,2),2)

#对x应用卷积和最大池化操作并赋值给变量outpout_pool
outpout_pool=pool(conv(x))

#输出 outpout_pool 的大小,要求输出打印不换行
print('Pool output size : ',outpout_pool.size())
#/********** End *********/

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

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

相关文章

k8s日常动手实践 ~~ pod访问 pod请求 k8s api ~ 含新版带curl的busybox镜像

前言: 可以使用 Kubernetes API 获取集群信息。使用 Service Account(SA)进行身份验证,可以以安全的方式访问 Kubernetes API,而无需在 Pod 中使用明文凭据。 以下是一个使用 Service Account 访问 Kubernetes API 获…

XV6源码阅读——进程地址空间

文章目录 前言页表实际情况 前言 一个本硕双非的小菜鸡,备战24年秋招。打算尝试6.S081,将它的Lab逐一实现,并记录期间心酸历程。 代码下载 官方网站:6.S081官方网站 页表 每个进程都有一个单独的页表,当xv6在进程之…

数据库变更时,OceanBase如何自动生成回滚 SQL

背景 在开发中,数据的变更与维护工作一般较频繁。当我们执行数据库的DML操作时,必须谨慎考虑变更对数据可能产生的后果,以及变更是否能够顺利执行。若出现意外数据丢失、操作失误或语法错误等情况,我们必须迅速将数据库恢复到变更…

2024王鹍申论重难点:材料的概括与处理

2024王鹍申论重难点:材料的概括与处理,是备考公务员申论考试的关键一环。王鹍老师以其深厚的理论功底和丰富的实践经验,深入剖析了申论材料的特点和概括方法,同时传授了有效的材料处理技巧。通过王鹍老师的讲解,考生们…

Winseeing汇信外贸软件行业版,助力面辅料外贸公司实现降本增效

面辅料外贸出口,一直是国民经济发展中的重要组成部分。在当前全球贸易环境动荡不安的背景下,面辅料外贸出口面临着诸多挑战和机遇。亚洲是我面料出口的主要市场,据海关数据统计显示,2024年1-2月我对亚洲国家累计出口面料69.3亿美元…

leetcode多个测试用例之间相互影响导致提交失败

背景 在做一道easy题,二叉树的中序遍历,我提交的代码如下 from typing import (Optional,List )# Definition for a binary tree node. class TreeNode:def __init__(self, val0, leftNone, rightNone):self.val valself.left leftself.right right…

利用FCL实现更加精准的碰撞检测

一,需求 利用OSG结合FCL实现实现精准的碰撞检测。 二,效果 看这里 利用FCL实现更加精准的碰撞检测 – Qt hello 三,分析 我们看如下这张图,碰撞的逻辑就是,在一个三维场景中,构造一个实体,…

机器学习笔记(二)回归

一、线性回归 线性回归是一种用于预测的统计方法,特别适用于连续值预测。📈线性回归通过最小化误差的平方和来寻找一个线性关系,用于预测一个变量(因变量)基于一个或多个其他变量(自变量)的值。…

远程控制安卓手机:便捷、高效与安全的方法

在移动设备的领域里,远程控制安卓手机的能力也变得越来越重要。这种技术可以让我们在远程地点方便地操作手机,无论是处理紧急事务、帮助他人解决问题,还是仅仅为了享受科技带来的便利。本文将为你介绍2种便捷、高效且安全的方法,让…

笔试狂刷--Day6(岛屿数量+模拟)

大家好,我是LvZi,今天带来笔试狂刷--Day6 一.在字符串中找出连续最⻓的数字串 1.题目链接 在字符串中找出连续最⻓的数字串 2.题目分析 使用双指针模拟 3.代码实现 import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {p…

Linux的学习之路:20、进程信号(2)

摘要 本章讲一下进程信号的阻塞信号和捕捉信号和可重入函数 目录 摘要 一、阻塞信号 1、阻塞信号 2、信号集操作函数 二、捕捉信号 1、内核如何实现信号的捕捉 2、代码实演 三、可重入函数 一、阻塞信号 1、阻塞信号 实际执行信号的处理动作称为信号递达(Delivery) …

文末送资料 | AI大模型接入指南:免费畅聊公众号新时代!附搭建教程

目录 今天内容有点意思! 福利:拉到最后,免费送资料,你想要的全都有 我把公号接入了,字节跳动的云雀AI大模型! 先给大家看几个案例 重点来了 如何将公号接入AI大模型呢? 1、创建AI聊天机器…

海南封关怎么看?win战略会任志雄解析

今年海南自由贸易港建设也进入了新阶段:将在2025年年底前适时启动全岛封关运作,封关后的海南将以全新姿态迎接更广泛的发展机遇。 封关在即,企业有何感受?还有哪些准备工作?封关后的海南将呈现怎样的状态?近日,红星资本局记者深入实地了解海南自贸港如何成型起势。 利好当…

快手不发作品ip地址会变吗

在数字时代,我们每个人的在线行为都留下了独特的痕迹。这些痕迹不仅仅是我们的言论或行为,还包括我们的IP地址——一个在网络世界中标识我们位置的数字标签。近年来,随着短视频平台的兴起,如快手这样的应用已经深入人们的日常生活…

sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步 ⏱️ 创作时…

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024)

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024) 会议简介 我们诚挚邀请您参加2024年大数据应用、智能控制和软件工程国际会议(BDAICSE2024)。这次会议将在美丽的长沙市举行。 本次大会旨在汇聚全球大数据应用、智能控制、软件工程等领…

常见大厂面试题(SQL)02

小鹏面试题: 小鹏汽车充电每辆车连续快充最大次数 原表charging_data idcharge_timecharge_typeXP10012023/11/20 8:45快充XP10012023/11/21 20:45快充XP10012023/11/22 8:45快充XP10012023/11/23 8:45慢充XP10012023/11/25 8:45快充XP10022023/11/25 8:45快充XP10022023/11/…

kubernetes中Pod资源的使用限制

一、概述 当kubernetes调度创建Pod后,Pod是否有足够的资源来运行容器,是非常重要的。资源分为两种类型——容器请求的资源和容器被限制的资源。 请求和限制是kubernetes控制集群cpu和内存等资源的重要方式,他们是两种不同的机制 容器请求的资…

C语言之回调函数+可变参数__VA_ARGS__:用法实例(四十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

GaussDB数据库SQL系列-聚合函数

背景 在这篇文章中,我们将深入探讨GaussDB数据库中聚合函数的使用和优化。聚合函数是数据库查询中非常重要的工具,它们可以对一组值执行计算并返回单个值。例如,聚合函数可以用来计算平均值、总和、最大值和最小值。 这些功能在数据分析和报…