当前位置:   article > 正文

【卷积神经网络】图像卷积、池化操作后的特征图大小计算方法_卷积神经网络特征图大小

卷积神经网络特征图大小

一、卷积操作

输入图像为正方形

输入图像尺寸为 W ∗ W W*W WW,卷积核尺寸为 F ∗ F F*F FF,步长为S,padding为P,卷积核个数为C,经过卷积层之后输出的图像尺寸为 N ∗ N ∗ C N*N*C NNC
N = W − F + 2 ∗ P S + 1 N=\frac{W-F+2*P}{S} +1 N=SWF+2P+1

输入图像为矩形

输入图像尺寸为 W ∗ H W*H WH,卷积核尺寸为 F ∗ F F*F FF,步长为S,padding为P,卷积核个数为C,经过卷积层之后输出的图像尺寸为 W ′ ∗ H ′ ∗ C W'*H'*C WHC,计算方式如下:
W ′ = W − F + 2 ∗ P S + 1 W'=\frac{W-F+2*P}{S}+1 W=SWF+2P+1
H ′ = H − F + 2 ∗ P S + 1 H'=\frac{H-F+2*P}{S}+1 H=SHF+2P+1
对于三通道的图像进行卷积,使用的是三维卷积核,比如说下图所示:
在这里插入图片描述
图源:TensorFlow中padding卷积的两种方式“SAME”和“VALID”

输出的矩阵会把三个通道分别卷积然后叠加起来形成一个二维矩阵,卷积核的个数决定了输出二维矩阵的个数,所以输出矩阵的通道数是卷积核的个数。如果出现除不尽的情况,卷积计算操作向下取整

二、池化操作

输入图像尺寸为 W ∗ H ∗ D W*H*D WHD(其中D是图像深度),池化核尺寸为 F ∗ F F*F FF,步长为S,一般不在池化操纵中使用padding操作,经过池化之后输出的图像尺寸为 W ′ ∗ H ′ ∗ D W'*H'*D WHD,计算方式如下:
W ′ = W − F S + 1 W'=\frac{W-F}{S}+1 W=SWF+1
H ′ = H − F S + 1 H'=\frac{H-F}{S}+1 H=SHF+1
池化不改变输入图像的通道数。如果出现除不尽的情况,池化计算操作向上取整

padding模式选择

在tensorflow中,你可以选择使用何种padding策略,有VALID和SAME可供选择。注意,和上面卷积操作有些许不同,这两种操作默认是向上取整的,因为tf的源代码中是这样写的:

If padding == "SAME":
      output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides[i])

    If padding == "VALID":
      output_spatial_shape[i] =
        ceil((input_spatial_shape[i] -
              (spatial_filter_shape[i]-1) * dilation_rate[i])
              / strides[i])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

dilation_rate为一个可选的参数,默认为1,这里我们先不管。那么这两种策略就可以写成如下公式。
VALID策略:
若padding=VALID,那么输出尺寸为 N = W − F + 1 S N=\frac{W-F+1}{S} N=SWF+1,向上取整。
SAME策略:
若padding=SAME,那么输出尺寸为 N = W S N=\frac{W}{S} N=SW,向上取整,使用padding填充,由上面计算可得 p a d d i n g = F − 1 2 padding=\frac{F-1}{2} padding=2F1
例子:TensorFlow中padding卷积的两种方式“SAME”和“VALID”

使用SAME:在这里插入图片描述

SAME结果:在这里插入图片描述
5/2=2.5,向上取整是3。
使用VALID:
在这里插入图片描述
VALID结果:
在这里插入图片描述
(5-3+1)/2=1.5,向上取整2。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/787255
推荐阅读
  

闽ICP备14008679号