zoukankan      html  css  js  c++  java
  • tf.nn的conv2d卷积与max_pool池化

    tf.nn.conv2d(value,filter,strides,[...])

    对于图片来说   

    value :   形状通常是np.array()类型的4维数组也称tensor(张量),  (batch,height,width,channels) 可以理解为(图片样本的个数,高,宽,图片的颜色通道数)

    value是待卷积的数据

    filter: 卷积核 -4元素元组【height,width,in_channels,out_channels】,前面的3个参数和value的后面3个参数一一对应。但是out_channels不太确定,卷积核的个数,

        如果对一个shape 为[64,40,120,32]的数据进行卷积 filter=【3,3,32,64】,padding='same',strides=[1, 1, 1, 1] ,shape就变为了[64,40,120,64].

        [3,3,32]与[40,120,32]进行对应,32=32,则相当于 【3,3】对【40,120】,卷积时以【3*3】的扫描面积在【40,120】上进行扫描,每扫描一次,在结果集上产生一个【1,1】的数据单位

                   起始位置为【40,120】上面的最前面【3,3】的部分,

                   移动步调大小为【1,1,1,1】,即上下左右每次移动都只能移动1个单位,每次只能向一个方向移动,

                   same表示结束位置为 卷积核与源数据重叠,只需移动一个单位则不再重叠。

        所以,对于【40,120,32】经过【3,3,32】的扫描后变成【40,120,1】,64表示经过了64次这样的扫描,于成了【40,120,64】


    padding: 扫描时对边角面积的处理模式 。SAME表示    扫描的的时候,对于源矩阵中 不足卷积核大小的 面积 仍进行扫描 ,直到卷积核的左边缘与源矩阵右边缘不相交为止。卷积核与源矩阵没有任何重叠部分 的扫描 不在结果集上产生数据单位。     VALID 表示,扫描时,对于源矩阵中 不足卷积核大小的 面积舍弃,不再扫描。

     


    tf.nn.max_pool(value,ksize,strides)池化与卷积的过程原理基本一样,

    ksize池化窗【batch,height,width,channels】,
    只是卷积改变的是height,width,channels,池化通常改变的是height,width 。
    conv1 = tf.nn.max_pool(conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') #[64,20,60,32] 

    对于[64,20,60,32] 的矩阵进行池化,卷积核【2,2】,步长【2,2】表示卷积核的面积为2*2,每次扫描时移动的步调大小是2个单位,如果对于一个4*4的矩阵,进行这个种扫描,

    扫描四次(2*2)即可扫描完成。如果是5*5的矩阵,不足卷积核的模式为same,则需扫描9次(3*3),valid模式4次(2*2)。

    所以,【64,20,60,32】的矩阵池化后shape则变为 【64,10,30,32】。

  • 相关阅读:
    【流量劫持】SSLStrip 终极版 —— location 瞒天过海
    【流量劫持】沉默中的狂怒 —— Cookie 大喷发
    【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
    Web 前端攻防(2014版)
    流量劫持 —— 浮层登录框的隐患
    流量劫持能有多大危害?
    流量劫持是如何产生的?
    XSS 前端防火墙 —— 整装待发
    XSS 前端防火墙 —— 天衣无缝的防护
    XSS 前端防火墙 —— 无懈可击的钩子
  • 原文地址:https://www.cnblogs.com/Ting-light/p/9255216.html
Copyright © 2011-2022 走看看