秃姐学AI系列之:池化层 + 代码实现

目录

池化层

二维最大池化层 Max Pooling

池化层超参数

平均池化层 Mean Pooling 

总结

代码实现 


池化层

卷积对位置非常敏感的,但是我们在实际应用中我们需要一定程度的平移不变性。比如照明、物体位置、比例、外观等因素会导致图片发生变化。所以卷积对未知太过于敏感不是一个很好的事情。

其次池化层可以减少数据量

二维最大池化层 Max Pooling

每个窗口中最强的模式信号

 可以看出,2 x 2最大池化允许输入由1像素位移(也就是在它窗口里面,允许半个窗口的偏移)。

池化层超参数

  • 和卷积层类似,都具有填充和步幅
  • 没有可学习的参数(与卷积不一样!!)
  • 每个输入通道应用池化层以获得相应的输出通道(不会融合多个通道!!与卷积不同)

因为多通道融合我可以交给卷积来做,池化层可以不这样做

  • 输出通道数 = 输入通道数

平均池化层 Mean Pooling 

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

相较于最大池化层,平均池化从会有一个更柔和的结果呈现

总结

  • 池化层返回窗口最大or平均值
  • 主要作用:缓解卷积层对位置的敏感性
  • 通常池化层会作为卷积层之后的操作
  • 同样有窗口大小、填充、步幅作为超参数
  • 对通道分别输出,不进行融合,也就是输入通道数 = 输出通道数
  • 没有可以学习的参数 

代码实现 

 实现池化层的正向传播

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))# 输出
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.]]]])

深度学习框架中的步幅与池化窗口的大小相同,所以4 x 4的矩阵只能容纳一个窗口,结果为一个标量

pool2d = nn.MaxPool2d(3)  # 一个3 x 3的窗口
pool2d(X)# 输出
tensor([[[[10.]]]])

填充和步幅可以手动设定

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

设定一个任意大小的矩形池化窗口,并分别设定填充和步幅的高度和宽度

pool2d = nn.MaxPool2d((2, 3), padding = (1, 1), stride = (2, 3))
pool2d(X)# 输出
tensor([[[[1., 3.],[9., 11.],[13., 15.]]]])

池化层在每个输入通道上单独计算

X = np.concatenate((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.]]]])
pool2d = nn.MaxPool2D(3, padding=1, strides=2)
pool2d(X)# 输出
array([[[[ 5.,  7.],[13., 15.]],[[ 6.,  8.],[14., 16.]]]])

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

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

相关文章

ollama使用llama3.1案例

ollama安装和运行llama3.1 8b conda create -n ollama python3.11 -y conda activate ollama curl -fsSL https://ollama.com/install.sh | sh ollama run songfy/llama3.1:8b 就这么简单就能运行起来了. 我们可以在命令行中与他交互. 当然我们也可以用接口访问: curl http:…

DQL-案例

一.题目: 1)分析: 1.有 姓名 ,性别,入职时间(需要开始时间和结束时间-->范围查询); 2.右下角有分页条-->需要分页展示 2)创建表的代码: -- 员工管理 create table emp (id int unsigned primary ke…

linux知识

内核是操作系统的核心部分,它是基于硬件的第一层软件扩充,提供操作系统的最基本功能,是操作系统工作的基础。内核的主要职责包括管理系统的进程、内存、设备驱动程序、文件和网络系统等,这些功能共同决定了系统的性能和稳定性。 …

武汉流星汇聚:西班牙时尚消费高涨,中国商家借亚马逊平台拓商机

在2024年第二季度的亚马逊西班牙站,一场前所未有的时尚盛宴正悄然上演。销售额同比高增长TOP10品类榜单的揭晓,不仅揭示了西班牙消费者对于时尚品类的狂热追求,更为亚马逊平台上的中国商家开启了一扇通往新蓝海的大门。其中,男士拳…

极速闪存启动:SD与SPI模式的智能初始化指南

最近很多客户朋友在询问我们 CS 创世 SD NAND 能不能使用 SPI 接口,两者使用起来有何区别,下面为大家详细解答。 SD MODE: CS 创世 SD NAND 支持 SD 模式和 SPI 模式,SD NAND 默认为 SD 模式,上电后,其初始化过程如下…

系统架构:分而治之

系统架构:分而治之 引言“分而治之”在架构中的应用模块化设计分层化架构微服务架构 分而治之的优势降低复杂性提高灵活性和可扩展性增强可维护性促进团队协作 分而治之的劣势复杂性转移性能开销开发和运维的复杂性数据一致性挑战 结论 引言 “分而治之”是一种分析…

python开发--乌龟对对碰实现(一)

文章目录 前言规则解析代码实现代码解析问题总结与思考 前言 "乌龟对对碰"是一种近期在网络直播平台上非常流行的盲盒玩法,消费者购买盲袋或盲盒,每个包含一个不同颜色的树脂乌龟玩具。玩家在购买时会许愿一个特定颜色的乌龟,卖家…

虚幻5|AI视力系统,听力系统,预测系统(1)视力系统

继宠物伴随系统初步篇后续 虚幻5|AI巡逻宠物伴随及定点巡逻—初步篇-CSDN博客 一,听力系统 1.打开宠物ai的角色蓝图 2.选中ai感知组件 右侧细节,找到ai感知,添加感知配置,我们需要的是ai视力配置 3.选中左侧创建的ai感知组件&…

分组汇总时保留不变列

Excel表格的ID列是分类,Value1和Value2是数值,ID相同时Descr 1和Descr 2保持不变。 ABCDE1IDValue 1Value 2Descr 1Descr 22112.51.8ax13112.31.1ax14111.91.6ax15123.73.5bx26123.91.5bx27132.50.2cx38132.64.1cx391324.8cx310132.71.8cx3 要求&#…

科创中心“核”动力|趋动科技:AI算力界的领跑者

近日,趋动科技与深信服正式推出联合解决方案。联合解决方案将深信服EDS的高性能存储与趋动科技OrionX AI算力资源池化软件、以及GeminiAI训练平台有机结合,整合存力与算力资源的同时,帮助用户建好AI平台、管好AI资源、用好AI服务。 双方已完成…

【嵌入式烧录刷写文件】-2.10-为一个Intel Hex文件计算校验和Checksum

案例背景(共6页精讲): 有如下一段Intel Hex文件,为其创建Checksum校验和:CRC16,CRC32(CVN),SHA-256 Hash算法…, 将Checksum Value填充到指定地址。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767…

Unity 求坐标点在扇形区域内的投影

视频效果&#xff1a; 代码: /// <summary>/// 投影在扇形区域内的点/// </summary>/// <param name"targetPos">目标点</param>/// <param name"fanRadius">扇形半径</param>/// <param name"fanAngle"…

【C语言】【Linux】如何在Linux终端中进行彩色输出——C语言篇

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;C语言编程&…

超越Midjourney的AI绘画神器,Flux文生图究竟强在哪里?测评攻略来咯|附生成咒语

最近&#xff0c;AI绘画界又掀起了一阵热潮。Flux大模型现在真的已经是火遍了Al圈&#xff0c;都说生图的质感媲midjourney&#xff1f;但是对于大多数人来说配置要求太高了&#xff0c;今天就带大家用国产的AI绘画软件进行测评&#xff0c;感兴趣的就一起往下看看吧&#xff0…

eNSP 华为交换机链路聚合

华为交换机链路聚合 链路聚合好处&#xff1a; 1、提高带宽 2、链路冗余 SW_2&#xff1a; <Huawei>sys [Huawei]sys SW_2 [SW_2]vlan batch 10 20 [SW_2]int g0/0/4 [SW_2-GigabitEthernet0/0/4]port link-type access [SW_2-GigabitEthernet0/0/4]port default vl…

知识改变命运 数据结构【栈和队列面试题】

1.最小栈 class MinStack {Stack <Integer>stack;Stack <Integer>minStack; public MinStack() {stacknew Stack<>();minStacknew Stack<>();}public void push(int val) {stack.push(val);if(minStack.empty()) {minStack.push(val);} else {int top…

解决旧版CMS内容管理无法登录的问题

最近遇到了输入正确的账户密码&#xff0c;旧版的CMS内容管理的平台提示登录成功却无法跳转的问题 遇到这种情况请不要慌&#xff01;&#xff01;&#xff01; 请按照下面的步骤解决问题&#xff1a; 1.点击账号管理 2.点击右上角的返回旧版控制台 3.点击cloud1环境 4.点击扩…

武林外传书生版单机安装教程+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设&#xff1a;武林外传书生版。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整…

代码随想录算法训练营第二十一天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

目录 一、LeetCode 669. 修剪二叉搜索树思路&#xff1a;C代码 二、LeetCode 108.将有序数组转换为二叉搜索树思路C代码 三、LeetCode 538.把二叉搜索树转换为累加树思路反中序遍历变量传参递归&#xff08;野路子&#xff09; 总结 一、LeetCode 669. 修剪二叉搜索树 题目链接…

javaweb学习之HTML(一)

推荐学习使用网站 w3school 在线教程 认识HTML HTML&#xff08;HyperText Markup Language&#xff09;是超文本标记语言&#xff0c;它是一个用于创建网页和网页应用程序的标准标记语言。HTML文档由一系列的元素&#xff08;elements&#xff09;组成&#xff0c;这些元素通…