卷积网络(conv)中步长、填充、卷积核大小与输入输出大小的关系

目录

1、stride =1

1)没有padding :o = (i - k) + 1

2)有padding

半填充:输入输出一样大 o = i(卷积核是基数)

全填充 :o = i + (k - 1)

2、stride ≠1:  o = [( i + 2p -k) / s] + 1

1)没有padding 

2)有padding 

3、统一的公式:o = [( i + 2p - k) / s] + 1


在设计深度学习网络的时候,需要计算输入尺寸和输出尺寸,那么就要设计卷积层的的各种参数。这里有一些设计时候的计算公式,方便得到各层的参数。

具体可以参考这篇文章:A guide to convolution arithmetic for deep learning

这里简化下,约定:

  • i:输入尺寸input
  • o:输出output
  • s:步长sride、
  • p:填充padding(一般都是零)
  • k:卷积核(kernel)大小

先按照步长来区分,然后按照padding区分

1、stride =1

1)没有padding :o = (i - k) + 1

2)有padding

统一公式

  • 半填充:输入输出一样大 o = i(卷积核是基数)

也就是说,padding的大小是kernel的“小”一半,5*5的核半填充padding就是5/2 = 2.5 = 2(向下取整),让原图像边缘当填充后卷积图像的中心

这里要注意的是2p实际是不等于k的,实际是2p = 2n ≠ 2n+1,所以,上式不等于i+1

  • 全填充 :o = i + (k - 1)

也就是说,padding的大小是kernel-1

2、stride ≠1:  o = [( i + 2p -k) / s] + 1

1)没有padding 

2)有padding 

3、统一的公式:o = [( i + 2p - k) / s] + 1

你可能感兴趣的:(一起从0开始深度学习,深度学习)