zoukankan      html  css  js  c++  java
  • TensorFlow中CNN的两种padding方式“SAME”和“VALID”

    来源

    dilation_rate为一个可选的参数,默认为1,这里我们可以先不管它。
    整理一下,对于“VALID”,输出的形状计算如下:

    new_height=new_width=⌈(W–F+1)/S⌉

    对于“SAME”,输出的形状计算如下:
    new_height=new_width=⌈W/S⌉

    其中,W为输入的size,F为filter为size,S为步长,⌈⌉为向上取整符号

    总之,TensorFlow 使用如下等式计算 SAME 、PADDING

    SAME Padding, 输出的高和宽,计算如下:

    out_height = ceil(float(in_height) / float(strides1))

    out_width = ceil(float(in_width) / float(strides[2]))

    VALID Padding, 输出的高和宽,计算如下:

    out_height = ceil(float(in_height - filter_height + 1) / float(strides1))

    out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))

    维度

    综合目前所学的知识,我们应该如何计算 CNN 中每一层神经元的数量呢?
    
    输入层(input layer)维度值为W, 滤波器(filter)的维度值为 F (height * width * depth), stride 的数值为 S, padding 的数值为 P, 下一层的维度值可用如下公式表示: (W−F+2P)/S+1。
    
    我们可以通过每一层神经元的维度信息,得知模型的规模,并了解到我们设定的 filter size 和 stride 如何影响整个神经网络的尺寸。
    

    正解

    H = height, W = width, D = depth

    我们有一个输入维度是 32x32x3 (HxWxD)
    20个维度为 8x8x3 (HxWxD) 的滤波器
    高和宽的stride(步长)都为 2。(S)
    padding 大小为1 (P)
    计算新的高度和宽度的公式是:

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

    输出的维度(shape)是什么?
    (32-8+2*1)/2+1=14
    滤波器的个数20就是新的深度

  • 相关阅读:
    HDFS上传/下载数据的过程和原理
    使用JavaAPI获取文件信息
    jquery 最佳实践
    jQuery ajax
    两中复制表结构
    c#基础知识
    类和结构区别
    访问修饰符
    设计模式详细
    设计模式分类
  • 原文地址:https://www.cnblogs.com/james0/p/8467498.html
Copyright © 2011-2022 走看看