常见组件详解(六):torch.nn.AvgPool2d()、torch.nn.AdaptiveAvgPool2d()

文章目录

  • 一、torch.nn.AvgPool2d():二维平均池化
    • 1.1参数介绍
    • 1.2代码案例
  • 二、torch.nn.AdaptiveAvgPool2d():自适应平均池化
    • 2.1参数介绍
    • 2.2代码案例
    • 2.3使用场景


一、torch.nn.AvgPool2d():二维平均池化

1.1参数介绍

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

  torch.nn.AvgPool2d()用于在由多个平面组成的输入信号上应用二维平均池化操作,输入尺寸为 ( N , C i n , H , W ) (N,C_{in},H,W) (N,Cin,H,W),输出尺寸为 ( N , C i n , H o u t , W o u t ) (N,C_{in},H_{out},W_{out}) (N,Cin,Hout,Wout)。输出特征图形状为:
在这里插入图片描述
其中, H i n 、 W i n H_{in}、W_{in} HinWin分别表输入图像的高度与宽度,默认向下取整。

参数名功能
kernel_size池化核大小,整数或元组。
stride步幅,默认等于kernel_size,整数或元组。
padding填充,整数或元组。
ceil_mode设为True时,在计算输出形状的过程中采用向上取整的操作,否则,采用向下取整。
count_include_pad布尔类型,当为True时,将在平均池化计算中包括零填充,否则,不包括零填充。
divisor_override如果被指定,则除数会被代替成divisor_override。换句话说,如果不指定该变量,则平均池化的计算过程其实是在一个池化核内,将元素相加再除以池化核的大小,也就是divisor_override默认为池化核的高×宽;如果该变量被指定,则池化过程为将池化核内元素相加再除以divisor_override。

1.2代码案例

【一般用法】

import torch
from torch import nn
img=torch.arange(16).reshape(1,1,4,4)
# 池化核和池化步长均为2
pool=nn.AvgPool2d(2,stride=2)
img_2=pool(img)
print(img)
print(img_2)

在这里插入图片描述
【ceil_mode用法】

import torch
from torch import nn
img=torch.arange(20,dtype=torch.float).reshape(1,1,4,5)
pool_f=nn.AvgPool2d(2,stride=2,padding=0,ceil_mode=False)#向下取整
pool_t=nn.AvgPool2d(2,stride=2,padding=0,ceil_mode=True)#向上取整
img_1=pool_f(img)
img_2=pool_t(img)
print(img)
print(img_1)
print(img_2)

在这里插入图片描述
【padding用法】

import torch
from torch import nn
img=torch.arange(16,dtype=torch.float).reshape(1,1,4,4)
pool_t=nn.AvgPool2d(2,stride=2,padding=1)#填充后图像大小为(1,1,6,6),池化输出图像大小为(1,1,3,3)
pool_f=nn.AvgPool2d(2,stride=2)#图像大小为(1,1,4,4),池化输出图像大小为(1,1,2,2)
img_1=pool_t(img)
img_2=pool_f(img)
print(img)
print(img_1)
print(img_2)

在这里插入图片描述
【count_include_pad】

import torch
from torch import nn
img=torch.arange(16,dtype=torch.float).reshape(1,1,4,4)
pool_t=nn.AvgPool2d(2,stride=2,padding=1,count_include_pad=True)
pool_f=nn.AvgPool2d(2,stride=2,padding=1,count_include_pad=False)
img_1=pool_t(img)
img_2=pool_f(img)
print(img)
print(img_1)#用于填充的0被用于计算
print(img_2)#用于填充的0不用于计算

在这里插入图片描述
【divisor_override】

import torch
from torch import nn
img=torch.arange(16,dtype=torch.float).reshape(1,1,4,4)
pool_1=nn.AvgPool2d(2,stride=2)
pool_d1=nn.AvgPool2d(2,stride=2,divisor_override=2)
pool_d2=nn.AvgPool2d(2,stride=2,divisor_override=3)
img_1=pool_1(img)
img_2=pool_d1(img)
img_3=pool_d2(img)
print(img)
print(img_1)
print(img_2)
print(img_3)

在这里插入图片描述

二、torch.nn.AdaptiveAvgPool2d():自适应平均池化

  torch.nn.AdaptiveAvgPool2d()用于将输入特征图的高度和宽度调整到指定输出尺寸(不会改变通道数),并执行平均池化操作输出特征图。与torch.nn.AvgPool2d()不同,torch.nn.AdaptiveAvgPool2d()可处理任意大小的输入特征图,并将其调整为指定的输出尺寸,即,对于每个通道,AdaptiveAvgPool2d会根据指定的输出大小将输入图像划分为分段网格,然后计算每个分段的平均值,这个平均值成为相应的输出像素。。

2.1参数介绍

torch.nn.AdaptiveAvgPool2d(output_size)
  • output_size:指定输出特征图的高度和宽度。
    • 整数:输出特征图的高度和宽度相等。
    • 元组:分别指定输出特征图的高度和宽度。
    • None:输出特征图尺寸和输入保持一致。

  torch.nn.AdaptiveAvgPool2d(output_size)的输入数据尺寸仍为 ( N , C , H , W ) (N,C,H,W) (N,C,H,W),输出数据尺寸由参数决定,但 N 、 C N、C NC不会改变。

2.2代码案例

【输出特征图大小为1x1】

import torch
import torch.nn as nn# 定义自适应平均池化层,输出尺寸为 1x1
adaptive_pool = nn.AdaptiveAvgPool2d((1, 1))
# 输入特征图尺寸为 1x3x4x4
input_tensor = torch.randn(1, 3, 4, 4)
output_tensor = adaptive_pool(input_tensor)print("输入:", input_tensor)
print("输出:", output_tensor)

在这里插入图片描述
【输出特征图宽、高不等】

import torch
import torch.nn as nn# 定义自适应平均池化层,输出尺寸为 1x1
adaptive_pool = nn.AdaptiveAvgPool2d((3, 2))
# 输入特征图尺寸为 1x3x4x4
input_tensor = torch.randn(1, 3, 4, 4)
output_tensor = adaptive_pool(input_tensor)print("输入:", input_tensor)
print("输出:", output_tensor)

在这里插入图片描述

2.3使用场景

  AdaptiveAvgPool2d()一般在卷积层和全连接层的交汇处使用,以便确定输出到Linear层的大小。下图为VGG中AdaptiveAvgPool2d()的使用:
在这里插入图片描述

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

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

相关文章

第T2周:TensorFlow实现彩色图片分类(CIFAR10数据集),并实现自己的真实图片分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标: 加载CIFAR-10数据集进行训练,然后能够对彩色图片进行分类 具体实现: (一)环境: 语…

Python | Leetcode Python题解之第442题数组中重复的数据

题目: 题解: class Solution:def findDuplicates(self, nums: List[int]) -> List[int]:ans []for x in nums:x abs(x)if nums[x - 1] > 0:nums[x - 1] -nums[x - 1]else:ans.append(x)return ans

可以免费制作表情包的AI工具来了!

一直想自己制作一套表情包,但一直没有找到好用的工具,要么就是太麻烦,要么就是不免费。 今天AI表情包免费制作工具来了,手机就可以直接做表情包,非常方便。 先看效果~ 工具用到的是通义APP,可以在频道中找…

一款革命性的AI写作工具——文字游侠AI大模型重大升级,创作效率提高高达20倍,小白也能轻松实现月入过万!

在自媒体创作的浪潮中,如何高效地生产高质量内容成为许多创作者的难题。然而,随着AI技术的飞速发展,这一难题得到了完美的解决。今天,我要为大家介绍一款革命性的AI写作工具——文字游侠AI大模型,它不仅能够大幅提高创…

Rust赋能前端:为WebAssembly 瘦身

❝ 凡事你一旦接纳了,就不存在了;你看不惯它,它就一直折磨你 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder ❝ 此篇文章所涉及到的技术有 WebAssembly Rust SIMD LLVM binaryen 因为,行文字…

Llama 3.1 技术研究报告-5

5.3 人工评测 除了在标准基准测试集上的评估外,我们还进⾏了⼀系列⼈类评估。这些评估使我能够测量和优化模型性能的更微妙⽅⾯,例如模型的语调、冗⻓性和对细微差别及⽂化背景的理解。精⼼设计的⼈类评估密切反映了⽤⼾体验,提供了模型在现…

PacketSender使用说明

1、Packet Sender介绍 Packet Sender是一个开源实用程序,允许发送和接收TCP、UDP和SSL(加密TCP)数据包,以及HTTP/HTTPS请求和面板生成。主线分支正式支持Windows、Mac和桌面Linux(带Qt)。其他地方可能会重…

隧道灯光远程控制系统的设计与实现(论文+源码)_kaic

摘要 随着互联网的发展,物联网的时代己经到来。无线控制技术的应用已经普及到了我们生活中的各个角落。节能环保的意识也在不断的加强,隧道照明作为隧道建设的一个主要的环节,一个好的隧道照明系统不仅仅能保障隧道车辆的正常通行&#xff0c…

无需科学!Copilot网页版GPT-4无限制对话来了!

之前本公众号讲过: 微软copilot分为免费版copilot、个人家庭版copilot pro(每月20刀)和商业版copilot for Microsoft 365(每月30刀)。 其中免费版和个人家庭版的copilot无论在任何情况下使用都需要科学手段。 商业版…

什么是前缀索引?

什么是前缀索引? 1、什么是前缀索引?2、为什么要使用前缀索引?3、如何选择前缀长度?4、创建前缀索引的SQL语法5、示例 💖The Begin💖点点关注,收藏不迷路💖 在处理包含长字符串的数据…

3款照片人物开口说话AI工具,跟真人说话一样~免费!短视频带货必备!(附教程)

大家好,我是画画的小强 今天给大家分享一个AI图片口播数字人讲认知思维,单号佣金赚5W的AI带货信息差玩法,许多小伙伴表示对这类AI带货玩法感兴趣。 说实话,现在AI照片人物对口型工具,越来越逼真,很难辨识出…

8.使用 VSCode 过程中的英语积累 - Help 菜单(每一次重点积累 5 个单词)

前言 学习可以不局限于传统的书籍和课堂,各种生活的元素也都可以做为我们的学习对象,本文将利用 VSCode 页面上的各种英文元素来做英语的积累,如此做有 3 大利 这些软件在我们工作中是时时刻刻接触的,借此做英语积累再合适不过&a…

牛犇啊!LSTM+Transformer炸裂创新,精准度高至95.65%!

【LSTMTransformer】作为一种混合深度学习模型,近年来在学术界和工业界都受到了极大的关注。它巧妙地融合了长短期记忆网络(LSTM)在处理时序数据方面的专长和Transformer在捕捉长距离依赖关系上的优势,从而在文本生成、机器翻译、…

做中视频计划,哪里找素材?推荐几个热门中视频素材下载网站

在做中视频计划时,寻找合适的素材至关重要。抖音上那些热门的中视频素材都是从哪里下载的呢?以下五大高清素材库值得收藏,赶紧来看看吧! 蛙学网 蛙学网提供了百万级的中视频素材,质量高且是4K高清无水印,视…

Android使用RecyclerView仿美团分类界面

RecyclerView目前来说对大家可能不陌生了。由于在公司的项目中,我们一直用的listview和gridview。某天产品设计仿照美团的分类界面设计了一个界面,我发现用gridview不能实现这样的效果,所以就想到了RecyclerView,确实是一个很好的…

(最新已验证)stm32 + 新版 onenet +dht11+esp8266/01s + mqtt物联网上报温湿度和控制单片机(保姆级教程)

物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——汇总 前言 之前在学校获得了一个新玩意:ESP-01sWIFI模块,去搜了一下这个小东西很有玩点,远程控制LED啥的,然后我就想…

[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作

​​​​​​Generation of Complex 3D Human Motion by Temporal and Spatial Composition of Diffusion Models L Mandelli, S Berretti - arXiv preprint arXiv:2409.11920, 2024 通过时间和空间组合扩散模型生成复杂的3D人物动作 摘要 本文提出了一种新的方法&#xff0…

UCS512DHN DMX512差分并联协议LED驱动IC 舞动灯光的魔法芯片

UCS512DHN产品概述: UCS512DHN是DMX512差分并联协议LED驱动芯片,可选择1/2/3/4通道高精度恒流输出,灰度达65536 级。UCS512DHN为带散热片封装的大电流输出版本。UCS512DHN有PWM反极性输出功能,此功能适合外挂三极 管,…

极品飞车14热力追踪原始版高清重制版MOD分享

《极品飞车14:热力追击》(Need for Speed:Hot Pursuit)是由Criterion Games工作室负责开发,EA公司2010年底发行的一款竞速类游戏,也是新一代的热力追踪系列作品,游戏平台为Xbox 360、PS3。 《极品飞车14&a…

11. LCEL:LangChain Expression Language

这篇文章覆盖了LCEL的理解和他是如何工作的。 LCEL(LangChain Expression Language):是把一些有趣python概念抽象成一种格式,从而为构建LangChain组件链提供一种“简约”代码层。 LCEL在下面方面有着强大的支撑: 链的快速开发流式输出、异…