精华内容
下载资源
问答
  • 最大池化

    千次阅读 2018-07-04 18:50:00
    TensorFlow 最大池化 由 Aphex34 (自己的作品)CC BY-SA 4.0, 通过 Wikimedia Commons 共享 这是一个最大池化的例子max pooling用了 2x2 的滤波器 stride ...

    TensorFlow 最大池化

     

    由 Aphex34 (自己的作品) CC BY-SA 4.0, 通过 Wikimedia Commons 共享

     

    这是一个最大池化的例子max pooling 用了 2x2 的滤波器 stride 为 2。四个 2x2 的颜色代表滤波器移动每个步长所产出的最大值。

    例如 [[1, 0], [4, 6]] 生成 6,因为 6 是这4个数字中最大的。同理 [[2, 3], [6, 8]] 生成 8。 理论上,最大池化操作的好处是减小输入大小,使得神经网络能够专注于最重要的元素。最大池化只取覆盖区域中的最大值,其它的值都丢弃。

    TensorFlow 提供了 tf.nn.max_pool() 函数,用于对卷积层实现 最大池化 。

    ...
    
    conv_layer = tf.nn.conv2d(input, weight, strides=[1, 2, 2, 1], padding='SAME')
    conv_layer = tf.nn.bias_add(conv_layer, bias)
    conv_layer = tf.nn.relu(conv_layer)
    # Apply Max Pooling
    conv_layer = tf.nn.max_pool(
        conv_layer,
        ksize=[1, 2, 2, 1],
        strides=[1, 2, 2, 1],
        padding='SAME')

     

    tf.nn.max_pool() 函数实现最大池化时, ksize参数是滤波器大小,strides参数是步长。2x2 的滤波器配合 2x2 的步长是常用设定。

    ksize 和 strides 参数也被构建为四个元素的列表,每个元素对应 input tensor 的一个维度 ([batch, height, width, channels]),对 ksize 和 strides 来说,batch 和 channel 通常都设置成 1

     

    设置

    H = height, W = width, D = depth

    • 输入维度是 4x4x5 (HxWxD)
    • 滤波器大小 2x2 (HxW)
    • stride 的高和宽都是 2 (S)

    新的高和宽的公式是:

    new_height = (input_height - filter_height)/S + 1
    new_width = (input_width - filter_width)/S + 1 

    注意:池化层的输出深度与输入的深度相同。另外池化操作是分别应用到每一个深度切片层。

    下图给你一个最大池化层如何工作的示例。这里,最大池化滤波器的大小是 2x2。当最大池化层在输入层滑动时,输出是这个 2x2 方块的最大值。

     
     

    池化层输出结果

     

    输出的维度大小是什么?格式写成 HxWxD。


    2x2x5

    重置
     

    转载于:https://www.cnblogs.com/fuhang/p/9264842.html

    展开全文
  • 卷积层输出大小的公式同样适用于最大池化,(n+2p-f)/s+1 (input_width + 2*padding - pool_size)/stride+1 平均池化与最大池化区别: 前向传播中计算pool区域内的最大值并记录该最大值所在输入数据中的位置,为了...

    最大池化层:
    、计算最大值和记录最大值所在输入数据中的位置
    、缩减模型的大小
    、提高计算速度
    、减少无用信息的影响
    、提高所提取特征的鲁棒性(最大值)

    计算池化层
    卷积层输出大小的公式同样适用于最大池化,(n+2p-f)/s+1
    (input_width + 2*padding - pool_size)/stride+1

    平均池化与最大池化区别:
    前向传播中计算pool区域内的最大值并记录该最大值所在输入数据中的位置,为了在反向传播中,需要把梯度值传到对应最大值的位置置。而且反向传播也就是把梯度值直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。所以max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大,也就是max id,这个变量就是记录最大值所在位置的,因为在反向传播中要用到。

    展开全文
  • 简述平均池化和最大池化

    千次阅读 2018-11-05 16:56:30
    简述平均池化和最大池化 pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。pooling目的是为了保持某种不变性(旋转、平移、伸缩等),常用的有mean-pooling,max-pooling和Stochastic-pooling...

    最大池化在GoogLeNet的论文中提到,

    先附上著名的网络结构GoogLeNet及其延伸版本,以便自己日后的学习。

    Inception[V1]: Going Deeper with Convolutions
    Inception[V2]: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
    Inception[V3]: Rethinking the Inception Architecture for Computer Vision
    Inception[V4]: Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
     

     

    论文中提到了这样一句话:max-pooling layers result in loss of accurate spatial information,作者也意识到了最大池化会导致某些精确的空间信息丢失,但是他在这里仅仅提到了,没有去深入思考,这让我联想到了最近的一个新模型,CapsNet,神经网络提出者Hinton的新论文。其中的思想也很新颖,而且我对CapsNet能否与迁移学习相联系有着比较大的兴趣,正在尝试着跟从实验室学长去研究。
     

     

    简述平均池化和最大池化

    pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。pooling目的是为了保持某种不变性(旋转、平移、伸缩等),常用的有mean-pooling,max-pooling和Stochastic-pooling三种。

     

    mean-pooling,即对邻域内特征点只求平均。

    max-pooling,即对邻域内特征点取最大。

     

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

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

    (2)卷积层参数误差造成估计均值的偏移。

     

    一般来说,mean-pooling能减小第一种误差,更多的保留图像的背景信息,max-pooling能减小第二种误差,更多的保留纹理信息。

     

     

    Stochastic-pooling则介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与mean-pooling近似,在局部意义上,则服从max-pooling的准则。

    展开全文
  • 卷积神经网络——池化层学习——最大池化

    万次阅读 多人点赞 2019-10-05 14:48:35
    池化层(Pooling layers...假如输入是一个4×4矩阵,用到的池化类型是最大池化(max pooling)。 执行最大池化的树池是一个2×2矩阵。 执行过程非常简单,把4×4的输入拆分成不同的区域,我把这个区域用不同颜色来标...

    池化层(Pooling layers)

    除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下。

    先举一个池化层的例子,然后我们再讨论池化层的必要性。

    假如输入是一个4×4矩阵,用到的池化类型是最大池化(max pooling)。

    执行最大池化的树池是一个2×2矩阵。

    执行过程非常简单,把4×4的输入拆分成不同的区域,我把这个区域用不同颜色来标记。

    对于2×2的输出,输出的每个元素都是其对应颜色区域中的最大元素值。在这里插入图片描述
    左上区域的最大值是9,右上区域的最大元素值是2,左下区域的最大值是6,右下区域的最大值是3。

    为了计算出右侧这4个元素值,我们需要对输入矩阵的2×2区域做最大值运算。

    这就像是应用了一个规模为2的过滤器,因为我们选用的是2×2区域,步幅是2,这些就是最大池化的超参数。

    因为我们使用的过滤器为2×2,最后输出是9。

    然后向右移动2个步幅,计算出最大值2。

    然后是第二行,向下移动2步得到最大值6。

    最后向右移动3步,得到最大值3。

    这是一个2×2矩阵,即f=2,步幅是2,即s=2。

    这是对最大池化功能的直观理解,你可以把这个4×4区域看作是某些特征的集合,也就是神经网络中某一层的非激活值集合。



    数字大意味着可能探测到了某些特定的特征,左上象限具有的特征可能是一个垂直边缘,一只眼睛,或是大家害怕遇到的CAP特征。

    显然左上象限中存在这个特征,这个特征可能是一只猫眼探测器。

    然而,右上象限并不存在这个特征。

    最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里。

    所以最大化运算的实际作用就是,如果在过滤器中提取到某个特征,那么保留其最大值。

    如果没有提取到这个特征,可能在右上象限中不存在这个特征,那么其中的最大值也还是很小,这就是最大池化的直观理解。

    必须承认,人们使用最大池化的主要原因是此方法在很多实验中效果都很好。

    尽管刚刚描述的直观理解经常被引用,不知大家是否完全理解它的真正原因,不知大家是否理解最大池化效率很高的真正原因。

    其中一个有意思的特点就是,它有一组超参数,但并没有参数需要学习。

    实际上,梯度下降没有什么可学的,一旦确定了f和s,它就是一个固定运算,梯度下降无需改变任何值。



    在这里插入图片描述
    我们来看一个有若干个超级参数的示例,输入是一个5×5的矩阵。

    我们采用最大池化法,它的过滤器参数为3×3,即f=3,步幅为1,s=1,输出矩阵是3×3。

    之前讲的计算卷积层输出大小的公式同样适用于最大池化,
    即(n+2p-f)/s+1,这个公式也可以计算最大池化的输出大小。

    此例是计算3×3输出的每个元素,我们看左上角这些元素,注意这是一个3×3区域,因为有3个过滤器,取最大值9。

    然后移动一个元素,因为步幅是1,蓝色区域的最大值是9。

    继续向右移动,蓝色区域的最大值是5。

    然后移到下一行,因为步幅是1,我们只向下移动一个格,所以该区域的最大值是9。

    这个区域也是9。

    这两个区域的最大值都是5。

    最后这三个区域的最大值分别为8,6和9。

    超参数f=3,s=1,最终输出如图所示。
    在这里插入图片描述

    以上就是一个二维输入的最大池化的演示,如果输入是三维的,那么输出也是三维的。

    例如,输入是5×5×2,那么输出是3×3×2。

    计算最大池化的方法就是分别对每个通道执行刚刚的计算过程。

    如上图所示,第一个通道依然保持不变。

    对于第二个通道,我刚才画在下面的,在这个层做同样的计算,得到第二个通道的输出。

    一般来说,如果输入是5×5×n_c,输出就是3×3×n_c,n_c个通道中每个通道都单独执行最大池化计算,以上就是最大池化算法。

    func MaxPooling(data [][]float64, pool_size int, step int)([][]float64){
        result := [][]float64{}
        for i := 0; i < len(data) - pool_size + 1; i += step{
            temp := []float64{}
            for j := 0; j < len(data[0]) - pool_size + 1; j += step{
                var max_num float64 = 0
                for cur_i := i; cur_i < i + pool_size; cur_i++{
                    for cur_j :=j; cur_j < j + pool_size; cur_j++{
                        max_num = math.Max(max_num, data[cur_i][cur_j])
                    }
                }
                temp = append(temp, max_num)
            }
            result = append(result, temp)
        }
        return result
    }
    
    展开全文
  • numpy实现最大池化

    2021-08-05 10:54:22
    最大池化的逻辑是在一个固定大小的格子类找到最大的值,他是一个无权重层 class max_pool(): def __init__(self,pooling=(2,2), strides=(2, 2), padding=(0, 0)): self.pooling = pooling self.strides = ...
  • 根据MIT的 Learning Deep Features for Discriminative Localization论文中的描述,在使用类响应图class activation mapping (CAM) 对比全局平均池化Global average pooling (GAP) vs 全局最大池化global max ...
  • 全局平均池化,全局最大池化

    千次阅读 2018-12-24 17:51:22
    深度学习: global pooling (全局池化) Global average Pooling 论文出处:Network In Network 举个例子 假如,最后的一层的数据是10个6*6的特征图,global average pooling是将每一张特征图计算所有像素点的...
  • 最大池化层和平均池化层图解

    万次阅读 2019-01-21 11:14:11
    因为maxpooling是获取最大值, 由于白色的像素值比较大, 黑色的像素值比较小 所以就手写图片而言, maxpooling其实说获取黑色数字周围的白色部分,而不是获取黑色部分。 另外keras中相关概念: ...
  • 即对于每一层的6x6=36个像素点,计算这36个像素点的均值(最大值),由于共有10层,所以共得到10个数据。 这样10 个特征图就会输出10个数据点,将这些数据点组成一个1*10的向量的话,就成为一个特征向量,就可以送入...
  • 最大池化层的作用: (1)首要作用,下采样 (2)降维、去除冗余信息、对特征进行压缩、简化网络复杂度、减小计算量、减小内存消耗等 (3)实现非线性、 (4)扩大感知野。 (5)实现不变性,其中不变形性包括,平移...
  • 在神经网络中,我们经常会看到池化层,常用的池化操作有四种:mean-pooling(平均池化),max-pooling(最大池化)、Stochastic-pooling(随机池化)和global average pooling(全局平均池化),池化层有一个很明显...
  • 卷积计算公式 1、卷积层输入特征图(input feature map)的尺寸为:H(input)×W(input)×C(input) H(input)表示输入特征图的高 W(input)表示输入特征图的宽 C(input)表示输入特征图的通道数(如果是第一个卷积层...
  • 同样的我们看看官方的文档,对于最大池化的函数定义: tf.keras.layers.MaxPool2D( pool_size=(2, 2), strides=None, padding='valid', data_format=None, **kwargs ) 这个函数给出了4个关键字参数,都是有 ...
  • 卷积计算和池化计算公式 卷积   卷积计算中,()表示向下取整。   输入:n* c0* w0* h0   输出:n* c1* w1* h1   其中,c1就是参数中的num_output,生成的特征图个数。    w1=(w0+2pad-kernel_size)/...
  • 池化层反向传播公式推导

    千次阅读 2018-07-03 01:23:48
    池化层反向传播公式推导 池化层在深度学习网络架构中的作用包括: * 减少计算量 减少特征图尺寸,减少后面的层的计算量 提高多尺度信息 如果存在多个池化层,就相当于网络中构造了一个多尺度特征金字塔,多尺度...
  • 1.34.PyTorch Down/up sample (pytorch上下采样) 1.34.1. 首先介绍下采样 1.34.1.1. MaxPool2d案例 1.34.1.2....1.34.2....1.34.3.ReLU案例 1.34.PyTorch Down/up sample (pytorch上下采样) ...pooling(池化)层
  • 1.视频网站:mooc慕课...1.9 池化层 Pooling layers 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下。
  • 卷积/池化后图像大小计算公式

    千次阅读 2020-02-21 10:12:33
    池化操作 输入图像的大小为 o l d _ w i d t h × o l d _ h e i g h t × 3 old\_width \times old\_height \times 3 o l d _ w i d t h × o l d _ h e i g h t × 3 卷积核的数量为 N N N 卷积核的尺寸为...
  • Tensorflow池化

    2019-03-22 21:02:35
    Tensorflow最大池化 Tensorflow提供tf.nn.max_pool()函数用于对卷积层实现最大池化 conv_layer = tf.nn.conv2d(input, weight, strides=[1, 2, 2, 1], padding='SAME') conv_layer = tf.nn.bias_add(conv_layer,...
  • 卷积:(n+2p-f)/s+1 池化:(n-f)/s+1
  • 卷基层和池化层输出大小计算公式

    万次阅读 2017-12-16 09:19:12
    假设 输入数据维度为W*W Filter大小 F×F 步长 S padding的像素数 P 可以得出 N = (W − F + 2P )/S+1 输出大小为 N×N
  • 1.计算公式 设: 图像宽为W,高为H,通道数为C; 卷积核尺寸为K,通道数为D,个数为N; 卷积运算步长为S,0填充大小为P; 输入和输出量分别以1和2表示。 卷积: W2 = (W1 - K + 2×P) / S + 1 H2 = (H1 - K + 2×P) ...
  • Python和PyTorch对比实现池化层MaxPool函数及反向传播 https://blog.csdn.net/oBrightLamp/article/details/84635308 正文 池化是一种尺寸缩小操作, 可以将大尺寸的图片缩小, 集约特征. 1. 池化层 MaxPool 函数...
  • 1. 卷积神经网络 (卷积层,激活函数,池化层,全连接层)  (1) 把神经网络的隐藏层分为卷积层和池化层(又叫下采样层)  · 卷积层 : 通过在原始图像上平移来提取特征  · 池化层 : 通过特征后稀疏参数来...
  • pytorch卷积层与池化层输出的尺寸的计算公式详解 要设计卷积神经网络的结构,必须匹配层与层之间的输入与输出的尺寸,这就需要较好的计算输出尺寸 卷积后,池化后尺寸计算公式: (图像尺寸-卷积核尺寸)/步长+1 (图像...
  • 卷积 对于卷积经过某层后的特征图大小计算方式: h2 = (h1-k+2p)/s + 1 w2 = (w1-k+2p)/s + 1 ...总结:池化输出大小=[(输入大小-卷积核大小)/步长]+1 反卷积 反卷积输出大小 (input_size-1)×strid
  • 池化层有最大池化层和平均池化层 池化层只会改变图片的尺寸(高度与宽度)不会改变图片的深度(通道) 最大池化层最后的结果是你选择核大小遍历的框里面把最大的值取出来组成的一个新的特征图 池化层主要做的是下采样 ...
  • 卷积、池化

    2019-11-13 17:17:26
    卷积、池化 文章目录卷积、池化一、卷积1.定义:2.目的3.卷积核卷积核的作用:卷积核一般为奇数卷积核示例:4.步长stride5.padding6.公式7.卷积核的选择@@@二、池化1定义:2.目的3.分类:4.公式 一、卷积 1.定义: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,479
精华内容 4,991
关键字:

最大池化公式