精华内容
下载资源
问答
  • 池化层
    2021-02-07 16:23:16

    参考网址:

    https://www.zhihu.com/question/36686900/answer/130890492

    https://www.cnblogs.com/skyfsm/p/6790245.html

    池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。
    简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。

    下采样层也叫池化层,其具体操作与卷积层的操作基本相同,只不过下采样的卷积核为只取对应位置的最大值、平均值等(最大池化、平均池化),即矩阵之间的运算规律不一样,并且不经过反向传播的修改。

    池化层的作用:

    个人觉得主要是两个作用:
    1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
    2. 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力

    A: 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

    B. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用

    (1) translation invariance:
    这里举一个直观的例子(数字识别),假设有一个16x16的图片,里面有个数字1,我们需要识别出来,这个数字1可能写的偏左一点(图1),这个数字1可能偏右一点(图2),图1到图2相当于向右平移了一个单位,但是图1和图2经过max pooling之后它们都变成了相同的8x8特征矩阵,主要的特征我们捕获到了,同时又将问题的规模从16x16降到了8x8,而且具有平移不变性的特点。图中的a(或b)表示,在原始图片中的这些a(或b)位置,最终都会映射到相同的位置。

    (2) rotation invariance:
    下图表示汉字“一”的识别,第一张相对于x轴有倾斜角,第二张是平行于x轴,两张图片相当于做了旋转,经过多次max pooling后具有相同的特征

    池化层用的方法有Max pooling 和 average pooling,而实际用的较多的是Max pooling。这里就说一下Max pooling,其实思想非常简单。

     

    对于每个2*2的窗口选出最大的数作为输出矩阵的相应元素的值,比如输入矩阵第一个2*2窗口中最大的数是6,那么输出矩阵的第一个元素就是6,如此类推。

    更多相关内容
  • 池化层

    千次阅读 2020-09-09 16:29:43
    ⼆维最⼤池化层和平均池化层 同卷积层⼀样,池化层每次对输⼊数据的⼀个固定形状窗⼝(⼜称池化窗⼝)中的元素计算输出。不同于卷积层里计算输⼊和核的互相关性,池化层直接计算池化窗口内元素的最大值或者平均值。...

    《动手学深度学习pytorch》部分学习笔记,仅用作自己复习。

    池化层

    池化(pooling)层,它的提出是为了缓解卷积层对位置的过度敏感性。

    ⼆维最⼤池化层和平均池化层

    同卷积层⼀样,池化层每次对输⼊数据的⼀个固定形状窗⼝(⼜称池化窗⼝)中的元素计算输出。不同于卷积层里计算输⼊和核的互相关性,池化层直接计算池化窗口内元素的最大值或者平均值。该运算也分别叫做最大池化或平均池化。

    让我们再次回到本节开始提到的物体边缘检测的例子。

    现在我们将卷积层的输出作为 2x2最⼤池化的输⼊。设该卷积层输⼊是 X 、池化层输出为 Y 。⽆论是 X[i, j] 和 X[i, j+1] 值不不同,还是 X[i,j+1] 和 X[i, j+2] 不不同,池化层输出均有 Y[i, j]=1 。也就是说,使⽤2x2 最⼤池化层时,只要卷积层识别的模式在⾼高和宽上移动不超过一个元素,我们依然可以将它检测出来。
    下⾯把池化层的前向计算实现在 pool2d 函数里。它跟5.1节(二维卷积层)⾥ corr2d 函数非常类似,唯一的区别在计算输出 Y 上。

    import torch
    from torch import nn
    def pool2d(X, pool_size, mode='max'):
        X = X.float()
        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

    我们可以构造图5.6中的输⼊数组 X 来验证⼆维最大池化层的输出。

    X = torch.tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
    pool2d(X, (2, 2))

    输出:

    tensor([[4., 5.],
    [7., 8.]])

    实验⼀下平均池化层。

    pool2d(X, (2, 2), 'avg') 

    输出:tensor([[2., 3.],
    [5., 6.]])

    填充和步幅

    同卷积层⼀样,池化层也可以在输⼊的⾼和宽两侧的填充并调整窗⼝的移动步幅来改变输出形状。池化层填充和步幅与卷积层填充和步幅的⼯作机制⼀样。我们将通过 nn 模块⾥里里的二维最大池化层 MaxPool2d 来演示池化层填充和步幅的⼯作机制。

    # 我们先构造一个形状为(1, 1, 4, 4)的输⼊数据,前两个维度分别是批量和通道。
    X = torch.arange(16, dtype=torch.float).view((1, 1, 4, 4))
    X

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

    默认情况下, MaxPool2d 实例例⾥步幅和池化窗口形状相同。下⾯使用形状为(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, 4), padding=(1, 2), stride=(2, 3))
    pool2d(X)

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

    多通道

    在处理理多通道输⼊数据时,池化层对每个输⼊通道分别池化,⽽不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输⼊通道数相等。下⾯将数组 X 和 X+1 在通道维上连结来构造通道数为2的输入。

    X = torch.cat((X, X + 1), dim=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.]]]])

    小结

    • 最⼤池化和平均池化分别取池化窗⼝中输⼊元素的最大值和平均值作为输出。
    • 池化层的⼀个主要作用是缓解卷积层对位置的过度敏感性。
    • 可以指定池化层的填充和步幅。
    • 池化层的输出通道数跟输⼊入通道数相同。
    展开全文
  • 纯verilog实现CNN卷积网络,包括卷积层,池化层,全连接FC层,vivado2019.2开发,含testbench
  • 最大池化层和平均池化层

    千次阅读 多人点赞 2021-04-20 14:29:28
    参考链接: ...著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 概念: 接触到pooling主要是在用于图像处理的卷积神经网络中,但随着深层神经网络的发展...与卷积层类似,池化层运算符由一个固定形

    参考链接:
    https://blog.csdn.net/junmuzi/article/details/53206600
    https://blog.csdn.net/qq_21190081/article/details/72871704
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    概念:

    接触到pooling主要是在用于图像处理的卷积神经网络中,但随着深层神经网络的发展,pooling相关技术在其他领域,其他结构的神经网络中也越来越受关注。

    与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。 相反,池运算符是确定性的,我们通常计算池化窗口中所有元素的最大值或平均值。这些操作分别称为 最大池化层 (maximum pooling)和 平均池化层 (average pooling)。

    在这里插入图片描述
    在这两种情况下,与互相关运算符一样,池化窗口从输入张量的左上角开始,从左到右、从上到下的在输入张量内滑动。在池化窗口到达的每个位置,它计算该窗口中输入子张量的最大值或平均值,具体取决于是使用了最大池化层还是平均池化层。

    **

    作用:

    pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。

    pooling目的是为了保持某种不变性(旋转、平移、伸缩等)

    根据相关理论,特征提取的误差主要来自两个方面:

    (1)邻域大小受限造成的估计值方差增大;

    (2)卷积层参数误差造成估计均值的偏移。
    重点作用:
    1、mean-pooling能减小第一种误差(邻域大小受限造成的估计值方差增大),更多的保留图像的背景信息,
    2、max-pooling能减小第二种误差(卷积层参数误差造成估计均值的偏移),更多的保留纹理信息。

    正向与反向过程:

    **正向:**max-pooling:取池化区域的最大值;
    mean-polling:取池化区域的平均值

    **反向
    **对于mean pooling,真的是好简单:假设pooling的窗大小是2x2, 在forward的时候啊,就是在前面卷积完的输出上依次不重合的取2x2的窗平均,得到一个值就是当前mean pooling之后的值。backward的时候,把一个值分成四等分放到前面2x2的格子里面就好了。如下

    forward: [1 3; 2 2] -> [2]
    backward: [2] -> [0.5 0.5; 0.5 0.5]
    在这里插入图片描述

    max pooling就稍微复杂一点,forward的时候你只需要把2x2窗子里面那个最大的拿走就好了,backward的时候你要把当前的值放到之前那个最大的位置,其他的三个位置都弄成0。如下

    forward: [1 3; 2 2] -> 3
    backward: [3] -> [0 3; 0 0]

    在这里插入图片描述

    展开全文
  • pytorch之池化层

    千次阅读 2022-04-21 14:10:59
    二维最大池化层和平均池化层 同卷积层一样,池化层每次对输入数据的一个固定形状窗口(又称池化窗口)中的元素计算输出。不同于卷积层里计算输入和核的互相关性,池化层直接计算池化窗口内元素的最大值或者平均值。...

    ·实际图像里,我们感兴趣的物体不会总出现在固定位置:即使我们连续拍摄同一个物体也极有可能出现像素位置上的偏移。这会导致同一个边缘对应的输出可能出现在卷积输出 Y中的不同位置,进而对后面的模式识别造成不便。
    在本节中我们介绍池化(pooling)层,它的提出是为了缓解卷积层对位置的过度敏感性
     

     

    二维最大池化层和平均池化层

    同卷积层一样,池化层每次对输入数据的一个固定形状窗口(又称池化窗口)中的元素计算输出。不同于卷积层里计算输入和核的互相关性,池化层直接计算池化窗口内元素的最大值或者平均值。该运算也分别叫做最大池化或平均池化。在二维最大池化中,池化窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当池化窗口滑动到某一位置时,窗口中的输入子数组的最大值即输出数组中相应位置的元素

     下面把池化层的前向计算实现在pool2d函数里。它跟5.1节(二维卷积层)里corr2d函数非常类似,唯一的区别在计算输出Y

    import torch
    from torch import nn
    
    def pool2d(X, pool_size, mode='max'):
        X = X.float()
        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
    

    我们可以构造图5.6中的输入数组X来验证二维最大池化层的输出。

    X = torch.tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
    pool2d(X, (2, 2))
    

    输出:

    tensor([[4., 5.],
            [7., 8.]])
    

    同时我们实验一下平均池化层。

    pool2d(X, (2, 2), 'avg')
    

    输出:

    tensor([[2., 3.],
            [5., 6.]])
    

    2. 填充和步幅

    同卷积层一样,池化层也可以在输入的高和宽两侧的填充并调整窗口的移动步幅来改变输出形状。池化层填充和步幅与卷积层填充和步幅的工作机制一样。我们将通过nn模块里的二维最大池化层MaxPool2d来演示池化层填充和步幅的工作机制。我们先构造一个形状为(1, 1, 4, 4)的输入数据,前两个维度分别是批量和通道。
     

    X = torch.arange(16, dtype=torch.float).view((1, 1, 4, 4))
    X
    

    输出:

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

    默认情况下,MaxPool2d实例里步幅和池化窗口形状相同。下面使用形状为(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, 4), padding=(1, 2), stride=(2, 3))
    pool2d(X)
    

    输出:

    tensor([[[[ 1.,  3.],
              [ 9., 11.],
              [13., 15.]]]])
    

    3. 多通道

    在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输入通道数相等。下面将数组XX+1在通道维上连结来构造通道数为2的输入。

    X = torch.cat((X, X + 1), dim=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.]]]])
    

     

     

    展开全文
  • 卷积层和池化层总结

    2022-04-21 21:38:38
    卷积层和池化层 卷积层通常是用作对输入层输入数据进行特征提取。池化层负责对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出尺度,进而减少模型所需要的参数量 卷积层次 特征类型 ...
  • 神经网络-池化层

    2022-02-02 20:59:32
    池化层: 一种形式的降采样 理解:在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。...
  • CNN的池化层

    2021-09-03 01:06:05
    前几篇我们介绍了CNN的卷积层,今天我们补充一下CNN的池化层。传送门:卷积神经网络(CNN)卷积核的基本概况关于tensorflow与pytorch里的卷积层理解转置卷积与空洞卷积回顾池...
  • 1、二维最大池化 返回滑动窗口中的最大值 2、填充、步幅、和多个通道 ...池化层与卷积层类似,都具有填充和步幅;...在每个输入通道应用池化层以获得相应的输出通道;..."""二维最大池化层和平均池化层"
  • 神经网络卷积层以及池化层介绍

    千次阅读 2021-09-29 08:33:33
    一、二维最大池化层和平均池化层 同卷积层⼀样,池化层每次对输⼊数据的⼀个固定形状窗⼝(⼜称池化窗⼝)中的元素计算输出。不同于卷积层⾥计算输⼊和核的互相关性,池化层直接计算池化窗⼝内元素的最⼤值或者平均...
  • 而我们并不希望它对位置过于敏感,所以提出了“池化层” 最大池化层可以允许输入发生一定范围内的偏移,作用在卷积输出上,有一定模糊化的效果 每个输入通道做一次池化层,而不像卷积层一样融合多个输入通道...
  • 卷积层与池化层

    万次阅读 多人点赞 2018-08-04 16:08:16
    卷积神经网络(Convolutional Neural Layer, CNN),除了全连接层以外(有时候也不含全连接层,因为出现了Global average pooling),还包含了卷积层和池化层。卷积层用来提取特征,而池化层可以减少参数数量。 卷...
  • 在深度学习中卷积计算可能是较为头痛的地方,池化层应该是最简单的一种运算,但是当看到池化层反向传播时,整个人都是懵的,之前从没涉及过,在学习的过程中,搜集资料也发现寥寥无几,一方面为了自我学习,另一方面...
  • 池化层&线性层

    2021-02-04 16:35:42
    池化层&线性层1.池化层-Pooling Layer1.1 nn.MaxPool2d1.2 nn.AvgPool2d1.3 nn.MaxUnpool2d2.线性层-Linear Layer 1.池化层-Pooling Layer 池化可实现冗余信息的剔除以及减小后续计算量。 下采样:将大尺寸...
  • PyTorch学习笔记(7)–神经网络:池化层     本博文是PyTorch的学习笔记,第7次内容记录,主要介绍神经网络池化层的基本使用。 目录PyTorch学习笔记(7)--神经网络:池化层1.池化操作1.1什么是池化操作1.2池化...
  • 池化层详细介绍

    万次阅读 多人点赞 2020-04-13 14:17:30
    常见的池化层 它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制...
  • 池化层:减小卷积核的尺寸,用来降维。 全连接层:实现分类(Classification),在很多分类问题需要通过softmax层进行输出 https://www.zhihu.com/question/276307619/answer/387253014 深入理解卷积层,...
  • 卷积层,池化层,全连接层

    千次阅读 2020-09-02 10:33:31
    举例来说, 卷积神经网络的第一卷积一个典型的滤波器的尺寸可以是5×5×3( 宽和高都是5) , 或者是3×3×3( 宽和高都是3) , 这里的宽度和高度可以任意定义, 但是深度必须是3, 因为深度要和输入一致, 而...
  • 漫谈池化层

    千次阅读 2019-11-04 13:06:30
    原文链接:漫谈池化层 | Hey~YaHei! 参考: 《Hands-On Machine Learning with Scikit-Learn and TensorFlow(2017)》Chap13 《Hands-On Machine Learning with Scikit-Learn and TensorFlow》笔记 《卷积神经网络...
  • 池化层和Padding简介

    2021-08-07 16:41:43
    1、池化层的理解 pooling池化的作用则体现在降采样:保留显著特征、降低特征维度,增大kernel的感受野。另外一点值得注意:pooling也可以提供一些旋转不变性。 池化层可对提取到的特征信息进行降维,一方面使特征图...
  • 池化层的作用

    千次阅读 2020-05-20 17:58:15
    第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape 第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, ...
  • 神经网络最大池化层

    千次阅读 2021-08-04 19:27:01
    最大池化层(常用的是maxpool2d)的作用: 一是对卷积层所提取的信息做更一步降维,减少计算量 二是加强图像特征的不变性,使之增加图像的偏移、旋转等方面的鲁棒性 具体操纵:取图像中的最大值作为输出,如下所示...
  • Pytorch学习——池化层

    2021-07-30 08:06:59
    什么是池化层 池化层的来源 池化层是深度学习中常用组件之一,在当前大部分的神经网络结构中都会使用池化层池化层最早来源于LeNet一文,当时被称为SumSample。在AlexNet之后采用Pooling命名, 后续沿用了该命名...
  • 池化层(pooling layer)

    千次阅读 2021-04-27 18:47:22
    除了卷积层,卷积网络也经常使用池化层(pooling layer)来缩减模型的大小(reduce the size of their representation),提高计算速度(speed up computation),同时提高所提取特征的鲁棒性(robust),下面来看...
  • 全局池化层

    2021-10-02 22:43:33
    全局池化层:global average pooling 作用:替代全连接层,减少参数量,主要是用来解决全连接的问题,其主要是是将最后一层的特征图进行整张图的一个均值池化,形成一个特征点,将这些特征点组成最后的特征向量,...
  • 点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达概述深度学习中CNN网络是核心,对CNN网络来说卷积层与池化层的计算至关重要,不同的步长、填充方式、卷积核大小、池化层...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,691
精华内容 31,076
关键字:

池化层