zoukankan      html  css  js  c++  java
  • 最大池化

    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

     
  • 相关阅读:
    C#中调用Outlook API 发起会议
    Log4Net配置
    web端调用Webapi获取Excel表格
    表格导出之Aspose.Cells
    验证输入框
    把新建的对象所有属性变成默认值
    省市区三级联动
    全局异常处理
    HttpHttpServletRequest / Reponse
    热部署
  • 原文地址:https://www.cnblogs.com/fuhang/p/9264842.html
Copyright © 2011-2022 走看看