6.5 池化层

这篇具有很好参考价值的文章主要介绍了6.5 池化层。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

是什么:池化层跟卷积层类似有个滑动窗口,用来取一个区域内的最大值或者平均值。

作用:卷积神经网络的最后的部分应该要看到整个图像的全局,通过池化(汇聚)操作,逐渐汇聚要取的像素,最终实现学习全局表示的目标。同时,卷积层的所有优势也被保留在了中间层。

特点:
1.降低卷积层读对位置的敏感性。(优点)
2.降低对空间降采样表示的敏感性。(优点)
3.池化层的输入通道和输出通道相同,如X的形状为[1,2,4,4],1代表样本数,第二个值:2,代表通道为2,所以输出的结果通道仍然为2,输出结果应该为[1,2,计算后的w,计算后的H]
4.使用最大汇聚层以及大于1的步幅,可以减少输出结果的空间维度(如高度和宽度)。

解释:因为池化是选出一个区域的作最大值或平均值,所以取池化区域内的像素时不依赖像素的位置。因为池化层往往在卷积层的后面,所以池化层可以降低卷积层对位置的敏感性。同样也可以降低空间降采样的敏感性。

池化后的输出形状

W = (行数 - 池化行数 + 池化行方向步长) / 池化行方向步长 + 1
H = (列数 - 池化列数 + 池化列方向步长) / 池化列方向步长 + 1文章来源地址https://www.toymoban.com/news/detail-630630.html

一.单通道池化

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':
                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)))
print(pool2d(X, (2, 2),'avg'))
tensor([[4., 5.],
        [7., 8.]])
tensor([[2., 3.],
        [5., 6.]])

池化层的填充和步幅

X = torch.arange(16,dtype=torch.float32)
print(X)
tensor([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.,
        14., 15.])
#(样本数,通道数,行数,列数)
X = X.reshape((1,1,4,4))
print(X)
tensor([[[[ 0.,  1.,  2.,  3.],
          [ 4.,  5.,  6.,  7.],
          [ 8.,  9., 10., 11.],
          [12., 13., 14., 15.]]]])

默认步幅与池化窗口相同,当使用3x3的池化窗口,步幅也是3x3

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

手动设置池化尺寸

pool2d = nn.MaxPool2d((2,3),stride=(2,3),padding=(0,1))
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的原shape = (1,1,4,4),下句是在第二个维度上增加一个4x4的矩阵 形状变成 (1,2,4,4)

X = torch.cat((X,X+1),1)
print(X)
print(X.shape)
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.]]]])
torch.Size([1, 2, 4, 4])
pool2d = nn.MaxPool2d(3,padding=1,stride=2)
X = pool2d(X)
print(X)
print(X.shape) # 池化不像卷积那样每个通道的结果要合在一起,所以池化层的输入通道和输出通道相同
tensor([[[[ 5.,  7.],
          [13., 15.]],

         [[ 6.,  8.],
          [14., 16.]]]])
# 池化层的输入通道和输出通道相同,X的通道为2,所以输出的结果通道仍然为2,下面第一个1是样本数,第二个值是通道数
torch.Size([1, 2, 2, 2])

到了这里,关于6.5 池化层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深度学习: 计算机视觉】如何改进计算机视觉数据集

    机器学习算法需要大量数据集来训练、提高性能并生成组织所需的结果。 数据集是计算机视觉应用程序和模型运行的燃料。数据越多越好。这些数据应该是高质量的,以确保人工智能项目获得最佳的结果和产出。 获取训练机器学习模型所需数据的最佳方法之一是使用开源数

    2024年02月20日
    浏览(48)
  • 深度学习与计算机视觉

    目录 1 深度学习 1.1 人工智能 1.2 机器学习 1.3 深度学习 1.3.1 深度学习发展历程 1.3.2 深度学习中的核心因素 1.3.3 深度学习模型分类 1.3.4 深度学习框架 2 计算机视觉 人工智能、机器学习、深度学习这三者的关系: 在实现人工智能的众多算法中,机器学习是发展较为快速的

    2024年02月06日
    浏览(48)
  • 深度学习|10.1 深度学习在计算机视觉的应用

    图像中的每一个像素点都是输入层的一部分。而最终最后只有一个输出点,也就是说需要通过乘上中间层/隐藏层内部的矩阵,从而实现降维。 直观上,信息越多,分析的效果应该越好,但也意味着分析的量会越来越大,考虑到分析所需要的时间和空间,往往采用卷积的方式

    2024年02月03日
    浏览(50)
  • 机器学习——池化层

    池化层是深度学习中常用的一种层级结构,它可以对输入数据进行降采样,减少数据量,同时保留重要的特征信息。池化层通常紧跟在卷积层之后,可以有效地减少数据量和计算复杂度,提高模型的训练速度和泛化能力。 池化层的结构与卷积层类似,它也由多个滤波器组成,

    2024年02月15日
    浏览(55)
  • 计算机视觉(五)深度学习基础

    深度学习与神经网络的区别 选择合适的目标函数 Softmax层 梯度消失的直观解释 激活函数 学习步长 SGD的问题 存在马鞍面,使我们的训练卡住,于是提出下面方法: Momentum动量 Nesterov Momentum 先利用“惯性”,“走”一步。避免一开始,就被当前梯度带偏。 Adagrad 为不同的参数

    2024年02月14日
    浏览(56)
  • 【学习笔记】计算机视觉深度学习网络模型

    这是本人学习计算机视觉CV领域深度学习模型的学习的一点点学习笔记,很多片子没有完成,可以作为学习的参考~

    2024年04月10日
    浏览(73)
  • 深度学习与计算机视觉的创新

    深度学习和计算机视觉是现代人工智能领域的两个重要分支。深度学习是一种通过多层神经网络来处理大规模数据的机器学习方法,而计算机视觉则是利用计算机程序来模仿人类视觉系统对图像进行分析和理解的技术。在过去的几年里,深度学习与计算机视觉的融合已经取得

    2024年04月09日
    浏览(52)
  • 计算机视觉(三)未有深度学习之前

    把图像划分成若干互不相交的区域。 经典的数字图像分割算法一般是基于灰度值的两个基本特征之一:不连续性和相似性。 基于阈值:基于图像灰度特征计算一个或多个灰度阈值。将灰度值与阈值比较,最后将比较结果分到合适的类别中。 大津法 基于边缘:边界线上连续的

    2024年02月15日
    浏览(54)
  • 计算机竞赛 深度学习乳腺癌分类

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习乳腺癌分类 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgradu

    2024年02月07日
    浏览(47)
  • 计算机视觉:从图像识别到深度学习

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 计算机视觉是人工智能领域中的一个重要分支,它致力于让计算机能够理解和处理

    2024年02月07日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包