【一起深度吧!】24/05/03

池化层

  • 最大池化和平均层化:
    • 最大池化:
    • 平均池化:
  • 从零实现池化层:

最大池化和平均层化:

池化的作用:
1、可以降维,减少要 训练的参数。
2、提取特征,也就是保留主要的特征,过滤掉不重要的信息,可以更好地学习。
3、平移不变性,即对于输入的数据所发生的小变化不敏感。
4、可以减轻过拟合,因为1,降低了模型的复杂程度,提高了泛化能力。

最大池化:

取出池化窗口中值最大的特征。
在这里插入图片描述

计算如下(默认步幅是1):
Max(0,1,3,4) = 4
向右移动:Max(1,2,4,5) = 5
到头向下移动:Max(3,4,6,7) = 7
向右移动: Max(4,5,7,8) = 8
组成新张量tensor。

平均池化:

取出池化窗口中的平均值,作为特征。

从零实现池化层:

import torch
from torch import nn
from d2l import torch as d2l

def pool2d(X,pool_size,mode='max'):
    #池化的高度,宽度
    p_h,p_w = pool_size
    #输出的大小
    Y = 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':
                # explain: X[i:i+p_h,j:j+p_w] 表示:
                # 取出x张量中的 第 i 行到第 i+p_h 行
                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(pool2d(X, [2, 2], 'max'))
print(pool2d(X, [2, 2], 'avg'))

输出如下:
tensor([[4., 5.],
[7., 8.]])
tensor([[2., 3.],
[5., 6.]])

#定义新X
X = torch.arange(16,dtype=torch.float32).reshape((1,1,4,4))
print(X)

输出如下:
tensor([[[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.]]]])

在默认情况下:深度学习框架的步幅与池化窗口的大小是相同的,就是说若池化窗口为22 的话,那么步幅就是(22)

pool2d = nn.MaxPool2d(3)  #这里的例子是(3*3),故他跳不了,只能取到10了
print(pool2d(X))

输出如下:
tensor([[[[10.]]]])

#手动指定步幅,

pool2d = nn.MaxPool2d(3,padding=1,stride=2)
print(pool2d(X))

输出如下:
tensor([[[[ 5., 7.],
[13., 15.]]]])

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

pool2d = nn.MaxPool2d((2,3),padding=(1,1),stride=(2,3))
print(pool2d(X))

输出如下:
tensor([[[[ 1., 3.],
[ 9., 11.],
[13., 15.]]]])

#池化层在每个输入通道上单独运算。
#在这里要注意一个细节:
torch.stack 是升维拼接。而 torch.cat 是同维拼接。

X1 = torch.stack((X,X+1),1)
print(X1.shape)
X2 = torch.cat((X,X+1),1)
print(X2.shape)
pool2d = nn.MaxPool2d(3,padding=1,stride=2)
print(pool2d(X2))

输出如下:
torch.Size([1, 2, 1, 4, 4])
torch.Size([1, 2, 4, 4])
tensor([[[[ 5., 7.],
[13., 15.]],

     [[ 6.,  8.],
      [14., 16.]]]])

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7-zip下载、安装

7-Zip 官方中文网站 (sparanoid.com) 7-Zip - 程序下载 (sparanoid.com)

Unity 性能优化之图片优化(八)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、可以提前和美术商量的事1.避免内存浪费(UI图片,不是贴图)2.提升图片性能 二、图片优化1.图片Max Size修改&#x…

Eayswoole 报错 crontab info is abnormal

在执行一个指定的定时任务时 如 php easyswoole crontab show 报错 crontab info is abnormal 如下图所示: 查询了半天 修改了如下配置: 旧的 // 创建定时任务实例 $crontab new \EasySwoole\Crontab\Crontab($crontabConfig); 修改后&#…

山海鲸医疗科技:引领智慧医疗新潮流

随着科技的飞速发展,智慧医疗已经成为医疗行业创新的重要方向。在这个背景下,山海鲸智慧医疗解决方案应运而生,以其先进的技术和全面的服务,为医疗行业带来了前所未有的变革。 山海鲸智慧医疗解决方案是一套集成医疗信息化、大数…

【OneAPI】网页截图API

OneAPI新接口发布:网页截图 可生成指定URL的网页截图。 接口地址:https://oneapi.coderbox.cn/openapi/api/webpage/screenshot 请求参数 参数名类型必填含义说明urlstring是要截图的网页链接例如:https://baidu.comwidthnumber否截图宽度…

龙迅LT9211D MIPI桥接到2 PORT LVDS,分辨率支持高达3840*2160*30HZ

龙迅LT9211D描述: Lontium LT9211D是一款高性能的MIPI DSI/CSI- 2到双端口LVDS转换器。LT9211D反序列化输入的MIPI视频数据,解码数据包,并将格式化的视频数据流转换为AP和移动显示面板或摄像机之间的LVDS发射机输出。LT9211D支持最大14 dB输…

手机运营商二要素验证接口:确保业务操作安全可靠

手机运营商二要素验证接口是一种通过与电信运营商合作的方式,检验手机用户的手机号码与姓名是否一致的服务。这个接口可以广泛应用于各种需要用户实名认证的场景,例如电商、游戏、直播以及金融等行业。 这个接口的作用非常重要,它可以帮助企…

C++——list的特性及使用

list的特性 STL中的list是指带头双向循环列表,list每个元素的存储相互独立,因为其节点存储位置独立不连续,其插入和删除不需要挪动其他元素效率比起vector更高。但也因为存储空间不连续的问题,不能做到和vector一样的随机…

鸿蒙编译子系统详解(二)main.py

1.5.4源码解析 1.5.4.1 build/hb/main.py脚本 这个脚本是编译的主程序脚本,流程如下: 首先是初始化各种module类,然后运行对应模块。 hb分为build,set,env,clean,tool,help几个模块,模块源码位于build/hb/modules/目录下&#xff…

学生管理系统初级

根据题目要求生成大纲 总结: 1.在书写时,考虑到了书写时id可是是abc... 类型是String,但在根据id获取集合中元素时 list.get() ,get()里面是int类型。 2.在书写还有一点功能并不完全, 2.1查找时是打印所有…

【NodeMCU实时天气时钟温湿度项目 1】连接点亮SPI-TFT屏幕和UI布局设计

前言 从今天开始,我们详解介绍制作实时天气时钟项目的方法步骤,主要分以下几个专题分别进行:(1)连接点亮SPI-TFT屏幕和UI布局设计;(2)NodeMCU的WIFI模式设置及连接;&…

车牌号识别系统:PyQT5+QT Designe+crnn/PaddleOCR+YOLO+OpenCV矫正算法。

PyQT5&QT Designecrnn/PaddleOCRYOLO传统OpenCV矫正算法。可视化的车牌识别系统项目。 车牌号识别系统 项目绪论1.项目展示2.视频展示3.整体思路 一、PyQT5 和 QT Designer1.简介2.安装3.使用 二、YOLO检测算法三、OpenCV矫正算法四、crnn/PaddleOCR字符识别算法五、QT界面…

FreeRTOS任务详解

一、任务的创建与删除 1.任务的基本概念 RTOS系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习 RTOS 系统的工程 师或者学生主要就是为了使用 RTOS 的多任务处理功能,初步上手 RTOS 系统首先必须掌握的 也是任务的创建、删除、挂起和恢复等操作,由此可见任务管理…

限量背包问题

问题描述 限量背包问题:从m个物品中挑选出最多v个物品放入容量为n的背包。 问题分析 限量背包问题,可以用来解决许多问题,例如要求从n个物品中挑选出最多v个物品放入容量为m的背包使得背包最后的价值最大,或者总共有多少种放法…

我独自升级:崛起怎么下载 我独自升级游戏下载教程分享

定于5月8日全球揭幕的《我独自升级崛起》——一款扣人心弦的动作RPG巨制,灵感采撷于同名动画及网络漫画的热潮,誓将引领满怀热忱的玩家步入一场交织着深邃探索和宏大规模的奇妙冒险。该游戏立足于一个独树一帜的网络武侠宇宙,细腻刻画了一个凡…

VSCode通过SSH连接虚拟机Ubuntu失败

问题说明 最近使用VSCode通过SSH连接Ubuntu,通过VSCode访问Ubuntu进行项目开发,发现连接失败 在VSCode中进行SSH配置 这些都没有问题,但在进行连接时候出现了问题,如下: 出现了下面这个弹窗 解决方法 发现当…

软件测试职责

软件测试职责主要包括以下几个方面: 1. 需求分析:理解软件需求规格说明书,确保测试活动覆盖所有的功能需求和非功能需求(如性能、安全性、兼容性等)。 2. 测试计划制定:根据项目需求,设计测试…

NodeJS 如何在npm运行时设置Windows控制台的标题?

通过代码设置 const server app.listen(port, () > {console.log(主机名称:, global.hostname)console.log(主机IP地址:, global.host)console.log(后台服务端口号:, port)console.log(恭喜你,启动成功!)process.title node …

图像处理

图像处理 导入图片 导入io模块,读取文件所在位置,将生成的图像数据赋给变量img,显示图像 from skimage import ioimgio.imread(D:\工坊\图像处理\十个勤天2.png)io.imshow(img) 运行结果: 将图片进行灰度处理 from skimage i…

Autodesk AutoCAD 2025 for Mac:强大的二维三维绘图工具

Autodesk AutoCAD 2025 for Mac是一款专为Mac用户打造的计算机辅助设计软件,它在继承了AutoCAD系列软件的优秀传统的基础上,针对Mac系统进行了全面优化,为用户提供了更出色的绘图和设计体验。 这款软件不仅支持用户创建和编辑复杂的二维几何图…
最新文章