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

devtools/2024/9/18 12:30:55/ 标签: 人工智能, 机器学习, pytorch

任务描述

本关任务:本关提供了一个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.ppmy.cn/devtools/12978.html

相关文章

如何操作HTTP返回头-ApiHug小技巧-002

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace &…

云轴科技ZStack入选中国信通院《高质量数字化转型产品及服务全景图(2023年度)》

近日,由中国互联网协会主办、中国信通院承办的“2024高质量数字化转型创新发展大会”暨“铸基计划”年度会议在北京成功召开。 本次大会发布了2024年度行业数字化转型趋势,总结并展望了“铸基计划”2023年取得的工作成果及2024年的工作规划。同时&#…

探索ChatGPT在提高人脸识别与软性生物识准确性的表现与可解释性

概述 从GPT-1到GPT-3,OpenAI的模型不断进步,推动了自然语言处理技术的发展。这些模型在处理语言任务方面展现出了强大的能力,包括文本生成、翻译、问答等。 然而,当涉及到面部识别和生物特征估计等任务时,这些基于文…

开源大模型 Llama 3

开源大模型Llama 3是一个在多个领域都展现出卓越性能的大模型。下面将为您介绍Llama 3的特性和一些简单的使用案例。 一、Llama 3介绍 Llama 3在Meta自制的两个24K GPU集群上进行预训练,使用了超过15T的公开数据,其中5%为非英文数据,涵盖30多种语言。这个训练数据集是前代L…

【CVPR2024】文本到图像的行人再识别中的噪声对应学习

这篇论文的标题是《Noisy-Correspondence Learning for Text-to-Image Person Re-identification》,作者是来自中国四川大学、英国诺森比亚大学、新加坡A*STAR前沿人工智能研究中心和高性能计算研究所的研究人员。论文主要研究了文本到图像的行人再识别(Text-to-Image Person…

XiaodiSec day031 Learn Note 小迪安全学习笔记

XiaodiSec day031 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day31 上传漏洞 前置 基础内容在 ctfshow 中演示 中间件 cms 中的文件上传 开始 文件上传一般配合抓包 前台验证, 在前台改就可上传成功 php 后缀的文件有 php 后门,可连…

LeetCode刷题笔记第104题:二叉树的最大深度

LeetCode刷题笔记第104题:二叉树的最大深度 题目: 给定一个二叉树,获得二叉树的最大深度 思路: 使用递归的方式,从上而下,判断树的深度(判断二叉树的深度就是判断二叉树子树的深度加1&#…

MySQL中的并发控制,读写锁,和锁的粒度

MySQL中的并发控制,读写锁,和锁的粒度 并发控制的概述 在数据库系统中,并发控制是一种用于确保当多个用户同时访问数据库时,系统能够提供数据的一致性和隔离性的机制。MySQL支持多种并发控制技术,其中包括锁机制、多…

【数据结构】栈的使用

栈(Stack)是一种基本的数据结构,它是一种线性表,但只允许在固定的一端进行插入和删除操作,这一端称为栈顶(top)。栈的特点是后进先出(Last In First Out, LIFO)&#xff…

企业有哪些常见网络需求场景?

企业的网络场景需求多种多样,主要取决于其业务规模、运营模式、技术应用等因素。 常见的企业网络场景需求 办公网络需求: 高速稳定的内部网络连接,以支持员工日常办公、数据传输和资源共享。 无线办公网络覆盖,以便员工在会议室…

类与对象笔记-Java-第一部分

类 基本格式 class 类名{ 类体 } 类的声明 class People{ } class 植物{ } 类体 class Ladder{float above;float bottom;float height;float area;float computer(){area(abovebottom)*height/2.0f;return area;}void setHeight(float h){heighth;} } 成员变量 成…

【数学建模】微分方程数值解,求海上缉私问题

实验目的 1. 掌握用MATLAB求常微分方程初值问题数值解的方法。 2. 用欧拉方法和龙格-库塔方法解决简化的实际问题。 实验内容(问题介绍) 算法介绍 调试过程 (1) function dv = fun(v,~) weight=527.436*0.4536*9.8;%单位N,实际上11bf=4.44822162N,这里11bf=4.44528N…

配置nodejs的俩小脚本

介绍:共两个脚本。 脚本1,用来配置环境变量,生成环境变量所需的配置信息,然后自己添加到系统环境变量里去 特别注意:该脚本需要放到nodejs目录下面,如果不是,则无法生成环境变量配置文本内容 另…

2万字长文:Docker必知必会系列

安装docker 安装: Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 **Docker CE 分为 **stable&grav…

Golang基础3-函数、nil相关

函数 需要声明原型支持不定参数 func sum(numbers ...int)int支持返回多值支持递归支持命名返回参数 // 命名返回参数 func add(a, b int) (sum int) {sum a breturn // 这里不需要显式地写出返回值,因为已经在函数签名中声明了命名返回参数 } 支持匿名函数、闭包…

国产FTP文件传输服务器需要具备哪些关键特性?

国产FTP文件传输服务器是指根据中国国内信息技术创新(信创)的要求和标准,自主研发的文件传输服务器软件。这类软件旨在替代传统的FTP服务器,以更好地适应国产化和信息安全的需要。国产FTP文件传输服务器通常需要具备以下要求&…

【管理咨询宝藏86】MBB物流公司营销项目价值定位与目标客户规划报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏86】MBB物流公司营销项目价值定位与目标客户规划报告 【格式】PDF版本 【关键词】战略规划、MBB、麦肯锡 【核心观点】 - 价值定位是企业希望深…

【docker】之linux配置定时任务--设置shell脚本定时执行(可定时备份、删除数据库)

目录 一、前言1. 关于cron2. cron服务相关命令3. cron查找配置文件4. 权限 二、步骤1. 编辑crontab文件2. 添加定时任务3. 任务格式解读4. 编辑好crontab文件后保存并退出5. 其他6. 日志 三、简单快捷版四、 关于权限与mail1. mail2. 权限 环境:linux容器&#xff1…

探索SmartEDA:电路仿真的教学新境界

在电子工程的教学领域,随着技术的飞速发展,传统的教学方法已经难以满足现代学生的学习需求。近年来,电路仿真软件在教学中的应用逐渐受到关注,而SmartEDA作为一款功能强大的电路仿真软件,为电子工程教学带来了革命性的…

苍穹外卖day11 Apache ECharts 数据统计-图形报表

文章目录 前言一、Apache ECharts二、营业额统计1. 业务规则2. 接口设计3. 代码实现 三、用户统计1. 业务规则2. 接口设计3. 代码实现 四、订单统计1. 业务规则2. 接口设计3. 代码实现 五、销量排名Top101. 业务规则2. 接口设计3. 代码实现 前言 作为后端开发人员使用Echarts&…