池化层笔记

池化层

文章目录

  • 池化层
    • 二维池化层
      • 超参数
      • 池化层的分类
      • 代码实现
        • 填充和步幅
      • 多个通道
    • 总结

卷积位置敏感,可以检测垂直边缘。需要有一定程度的平移不变性,而在平时图片的拍摄,会因为图片的照明,物体位置,比例,外观等因素会导致对位置过度敏感。池化层的出现解决了这一问题。

池化层的作用:使得模型对图片的位置信息没那么敏感;降低对空间降采样表示的敏感性。

为什么先池化层再应用中出现概率不高呢?因为现在对数据处理之前做扰动操作,淡化了池化层的作用。

二维池化层

  • 返回滑动窗口的最大值

池化的效果:模糊效果,在临近的列可以取得相同的特征(池化层对于像素偏移的容忍性)

超参数

同卷积,有填充,步幅的超参数;多个通道的池化会不会将最后的结果相加,故输入通道和输出通道的个数相同。没有可学习的参数,即没有卷积核超参数的学习。

池化层的分类

  • 最大池化层:每个窗口中最强的模式信号

在这里插入图片描述

  • 平均池化层:将最大池化层中的“最大”操作替换为“平均”

代码实现

import torch
from torch import nn
from d2l import torch as d2ldef 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]])
pool2d(X, (2, 2))				pool2d(X, (2, 2), 'avg')
--------------------------------------------------------------
tensor([[4., 5.],				tensor([[2., 3.],[7., 8.]])						[5., 6.]])		
填充和步幅

同卷积操作中的填充和步幅

# 定义一个矩阵
X = torch.arange(16, dtype=torch.float32).reshape((1, 1, 4, 4))
-------------------------------------------------------------------
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.]]]])
# 核大小为2*3,第一个位置都是行操作,第二个位置都是列操作
pool2d = nn.MaxPool2d((2, 3), stride=(2, 3), padding=(0, 1))
pool2d(X)
---------------------------------------------------------------
tensor([[[[ 5.,  7.],[13., 15.]]]])

多个通道

池化处理多通道输入数据时,池化层在每个输入通道上单独运算,不像卷积层在通道上对输入进行汇总。

# 输入数据变成 1*2*4*4
X = torch.cat((X, X + 1), 1)
--------------------------------------------
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.]]]])pool2d = nn.MaxPool2d(3, padding=1, stride=2)
pool2d(X)
---------------------------------------------
tensor([[[[ 5.,  7.],[13., 15.]],[[ 6.,  8.],[14., 16.]]]])

发现pool2d和maxpool2d的区别:

MaxPool2d 的行为

  • 不满足核大小时:在 MaxPool2d 中,如果输入特征图的某个区域(例如最后一部分)小于指定的核大小,不会进行池化运算。这意味着最后的一部分数据如果不满足核的大小,将被忽略,直接跳过计算。

Pool2d 的行为

  • 始终进行运算:相比之下,pool2d(或在 PyTorch 中的 F.avg_pool2dF.max_pool2d)会处理整个输入,即使最后一部分数据不满足核的大小。在这种情况下,pool2d 会对不足的部分执行计算,而不会忽略它们。

总结

  • 池化层返回窗口中最大或平均值

  • 缓解卷积层对位置的敏感性

  • 同样 有窗口大小、填充和步幅作为超参数

  • 池化的本质是增强泛化 避免过拟合

池化层窗口的重叠与没有重叠的差别没有很大差别。

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

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

相关文章

大数据-191 Elasticsearch - ES 集群模式 配置启动 规划调优

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

mysql 5.7实现组内排序(连续xx天数)

需求:查询出连续登录的用户及其连续登录的天数 我先说一下思路:要实现连续登录的判断,可以找一下他们之间的规律。这里我拿一个用户来说,如果这个用户在1、2、3号都有登录记录,可以对这个用户的数据按照时间排序&…

从零学习大模型(九)-----P-Tuning(下)

代码展示P-Tuning的全过程 import torch from torch import nn from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments from datasets import load_dataset# 1. 数据准备 dataset load_dataset("imdb")# 2. 构建提示…

什么是安全组件?

安全组件是信息系统中用于保护数据和系统安全的关键部分。它们通常包括一系列的软件和硬件组件,旨在提供身份验证、授权、数据加密、防病毒、入侵检测等功能。这些组件可以是独立的软件程序,也可以是嵌入到操作系统或应用程序中的模块,或者作…

J3学习打卡

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 DensNet模型 import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras import layers, models, initializersclass DenseLayer(lay…

基于微信小程序的小区管理系统设计与实现(lw+演示+源码+运行)

摘 要 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。所以各大互联网厂商都瞄准移动互联网这个潮…

随机变量、取值、样本和统计量之间的关系

1. 随机变量 (Random Variable) 随机变量是用来量化随机现象结果的一种数学工具。随机变量是一个函数,它将实验结果映射到数值。随机变量可以是离散的或连续的。 离散随机变量:取有限或可数无限个值。例如,掷骰子的结果。连续随机变量&…

Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)

一、蚁群算法 蚁群算法由意大利学者Dorigo M等根据自然界蚂蚁觅食行为提岀。蚂蚁觅食行为表示大量蚂蚁组成的群体构成一个信息正反馈机制,在同一时间内路径越短蚂蚁分泌的信息就越多,蚂蚁选择该路径的概率就更大。 蚁群算法的思想来源于自然界蚂蚁觅食&a…

Pandas行转列与列装行

实际上,两种操作的核心代码确实非常相似,因为它们都涉及到将 JSON 数据解析并进行拆分。主要的区别在于操作的顺序和处理的对象: 一列转多列: 首先,我们将 JSON 数据列中的每个 JSON 对象解析为 Python 字典&#xff…

物联网智能项目实战:智能温室监控系统

物联网(Internet of Things, IoT)技术正在以前所未有的速度改变着我们的生活方式。通过将传感器、执行器和其他物理设备连接到互联网,物联网技术可以实现远程监测和控制。本文将通过一个具体的物联网智能项目——智能温室监控系统的实现&…

给哔哩哔哩bilibili电脑版做个手机遥控器

前言 bilibili电脑版可以在电脑屏幕上观看bilibili视频。然而,电脑版的bilibili不能通过手机控制视频翻页和调节音量,这意味着观看视频时需要一直坐在电脑旁边。那么,有没有办法制作一个手机遥控器来控制bilibili电脑版呢? 首先…

JavaEE初阶---网络原理之TCP篇(二)

文章目录 1.断开连接--四次挥手1.1 TCP状态1.2四次挥手的过程1.3time_wait等待1.4三次四次的总结 2.前段时间总结3.滑动窗口---传输效率机制3.1原理分析3.2丢包的处理3.3快速重传 4.流量控制---接收方安全机制4.1流量控制思路4.2剩余空间大小4.3探测包的机制 5.拥塞控制---考虑…

【C语言刷力扣】3216.交换后字典序最小的字符串

题目: 解题思路: 字典序最小的字符串:是指按照字母表顺序排列最前的字符串。即字符串在更靠前的位置出现比原字符串对应字符在字母表更早出现的字符。 枚举数组元素,尽早将较小的同奇偶的相邻字符交换。 char* getSmallestString…

定时器(多线程)

标准库中的定时器 • 标准库中提供了⼀个 Timer 类. Timer 类的 核⼼⽅法为 schedule . • schedule 包含两个参数. 第⼀个参数指定即将要执⾏的任务代码, 第⼆个参数指定多⻓时间之后 执⾏ (单位为毫秒). Timer timer new Timer (); timer.schedule( new TimerTas…

Linux(centOS)的安全命令

先全部列出来: 命令及其作用: - setenforce 0:将 SELinux 临时切换为宽松模式(permissive) - setenforce 1:将 SELinux 临时切换为强制模式(enforcing) - selinux的配置文件在/e…

Java:Map和Set练习

目录 查找字母出现的次数 只出现一次的数字 坏键盘打字 查找字母出现的次数 这道题的思路在后面的题目过程中能用到,所以先把这题给写出来 题目要求:给出一个字符串数组,要求输出结果为其中每个字符串及其出现次数。 思路:我…

【宠粉赠书】大模型项目实战:多领域智能应用开发

在当今的人工智能与自然语言处理领域,大型语言模型(LLM)凭借其强大的生成与理解能力,正在广泛应用于多个实际场景中。《大模型项目实战:多领域智能应用开发》为大家提供了全面的应用技巧和案例,帮助开发者深…

【商汤科技-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

Chromium HTML5 新的 Input 类型week对应c++

一、Input 类型: week week 类型允许你选择周和年。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head><body><form action"demo-form.php">选择周: <inp…

Nginx防盗链配置

1. 什么是盗链? 盗链是指服务提供商自己不提供服务的内容&#xff0c;通过技术手段绕过其它有利益的最终用户界面&#xff08;如广告&#xff09;&#xff0c;直接在自己的网站上向最终用户提供其它服务提供商的服务内容&#xff0c;骗取最终用户的浏览和点击率。受益者不提供…