动手学深度学习(pytorch)学习记录25-汇聚层(池化层)[学习记录]

server/2024/9/22 23:44:40/

目录

  • 汇聚层(池化层):
  • 填充和步幅
  • 多通道

汇聚层(池化层):

降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。
最大汇集层
汇聚层和卷积层的运动方式一样,从左上角向右下角移动指定步幅,汇聚层执行的是“采样”操作。 汇聚层是没有参数的。

import torch
from torch import nn

定义一个池化操作,X是张量,pool_size是汇聚层大小,mode默认为max即输出为输入区域的最大值,mode设置为avg时,输出为输入区域的平均值。

def pool2d(X, pool_size, mode='max'):p_h, p_w = pool_sizeY = torch.zeros((X.shape[0] - p_h + 1, X.shape[1] - p_w + 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):if mode == 'max':Y[i, j] = X[i: i + p_h, j: j + p_w].max()elif mode == 'avg':Y[i, j] = X[i: i + p_h, j: j + p_w].mean()return Y

输入张量,验证最大汇聚层

X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])
print(X)
pool2d(X, (2, 2))
tensor([[0., 1., 2.],[3., 4., 5.],[6., 7., 8.]])
tensor([[4., 5.],[7., 8.]])

验证平均汇聚层

pool2d(X, (2, 2), 'avg')
tensor([[2., 3.],[5., 6.]])

填充和步幅

X = torch.arange(16, dtype=torch.float32).reshape((1, 1, 4, 4))
X
tensor([[[[ 0.,  1.,  2.,  3.],[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.],[12., 13., 14., 15.]]]])

默认情况下,学习>深度学习框架中的步幅与汇聚窗口的大小相同,如果使用形状为(3,3)的汇聚层窗口,则得到的步幅大小为(3,3)。

pool2d = nn.MaxPool2d(3)
pool2d(X)
tensor([[[[10.]]]])

手动设置填充和步幅

pool2d = nn.MaxPool2d(3, padding=1, stride=2)
pool2d(X)
tensor([[[[ 5.,  7.],[13., 15.]]]])

自定义汇聚层窗口、填充、步幅

pool2d = nn.MaxPool2d((2, 3), stride=(2, 3), padding=(0, 1))
pool2d(X)
tensor([[[[ 5.,  7.],[13., 15.]]]])

多通道

在通道维度上连结张量X和X + 1,以构建具有2个通道的输入。

X = torch.cat((X, X + 1), 1)
X
tensor([[[[ 0.,  1.,  2.,  3.],[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.],[12., 13., 14., 15.]],[[ 1.,  2.,  3.,  4.],[ 5.,  6.,  7.,  8.],[ 9., 10., 11., 12.],[13., 14., 15., 16.]]]])

汇聚后输出通道的数量仍是2

pool2d = nn.MaxPool2d(3, padding=1, stride=2)
pool2d(X)
tensor([[[[ 5.,  7.],[13., 15.]],[[ 6.,  8.],[14., 16.]]]])

封面图片来源
文章用图与封面一致。
欢迎点击我的主页查看更多文章。
本人学习地址https://zh-v2.d2l.ai/
恳请大佬批评指正。


http://www.ppmy.cn/server/116235.html

相关文章

PHP一键约课高效健身智能健身管理系统小程序源码

一键约课,高效健身 —— 智能健身管理系统让健康触手可及 🏋️‍♀️ 告别繁琐,一键开启健身之旅 你还在为每次去健身房前的繁琐预约流程而烦恼吗?现在有了“一键约课高效健身智能健身管理系统”,所有问题都迎刃而解…

如何缩放C#中的img

在C#中,你可以使用 System.Drawing 命名空间中的 Graphics 类来缩放图像。以下是缩放图像的一般步骤: 加载原始图像:使用 Image.FromFile 或 Bitmap.FromFile 方法加载原始图像。 创建缩放后的图像:创建一个新的 Bitmap 对象&…

腾讯发布大模型安全与伦理报告:以负责任AI引领大模型创新

前言 随着AI模型的能力日益更加强大,如何让其行为和目的跟人类的价值、偏好、伦理原则、真实意图之间实现协调一致,这个被称为人机价值对齐的问题变得越来越重要。价值对齐对于确保人类与人工智能协作过程中的信任与安全至关重要,已经成为AI…

海思SD3403(21AP10, 108DC2910 )4K60 的 ISP 图像处理能力,4Tops INT8算力

21AP10 是一颗面向市场推出的专业超高清智能网络录像机 SoC。该芯片最高支持四 路 sensor 输入,支持最高 4K60 的 ISP 图像处理能力,支持 3F WDR、多级降噪、六 轴防抖、硬件拼接等多种图像增强和处理算法,为用户提供了卓越的图像处理能力。…

什么是 Python

Python 是一种易于解释的高级面向对象的编程语言,具有易于阅读的语法。Python 是原型设计和临时任务的理想选择,在科学计算,Web 开发和自动化中得到了广泛的应用。作为一种通用的,初学者友好的编程语言,Python 支持全球…

如何通过海外云手机提升运营效率

随着技术的不断进步,市场上出现了越来越多的提高跨国电商运营效率的应用,海外云手机就是其中一个。海外云手机的优势体现在多个方面,那么如何通过使用海外云手机来提升运营效率?可以从以下几个方面了解。 首先,海外云手…

DDComponentForAndroid:探索Android组件化方案

在现代Android应用开发中,随着应用规模的不断扩大,传统的单体应用架构已经无法满足快速迭代和维护的需求。组件化架构作为一种解决方案,可以将应用拆分成多个独立的模块,每个模块负责特定的功能,从而提高代码的可维护性…

大模型中的多模态概念指的是什么

大模型中的多模态(Multimodal)概念是指模型能够同时处理和理解来自多种类型的数据或信息模式(modalities),如文本、图像、音频、视频等。这种模型不仅可以从单一模态(如仅文本或仅图像)中学习&a…