在使用Keras的时候会遇到这样的代码x = Conv2D(filters, kernel_size=5, strides=2, padding='same')(x),与pytorch不同,keras和TensorFlow设置卷积层的过程中可以设置padding参数,vaild和same。“valid”代表只进行有效的卷积,对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。

分析

那vaild和same有什么区别,两者本质区别就是padding过程中采取的策略不同。

PADDING=‘SAME’ or‘VALID’

“valid”

valid即只对图像中像素点“恰好”与卷积层对齐的部分进行卷积。上图中一维演示中输入宽度为13,卷积宽度为6,每次前进5格,当进行到(12、13)的时候因为每次步伐为5,5>2,所以(12、13)就不进行卷积了,舍弃了最右边的这两个数。

“same”

same则不同,尽可能对原始的输入左右两边进行padding从而使卷积核刚好全部覆盖所有输入,当进行padding后如果输入的宽度为奇数则会在右边再padding一下(如上图15+1=16,右边两个pad,左边一个pad)。

上面是按照1D的形式来进行讲解的,2D的形式原理也相同。

valid:

  PADDING=‘SAME’ or‘VALID’

same:

  PADDING=‘SAME’ or‘VALID’

其中W为输入的宽度、F为卷积filter的size,S为步长(Stride)。

相关文章:

  • 2021-08-25
  • 2021-09-28
  • 2022-12-23
  • 2021-11-14
  • 2021-06-16
  • 2022-12-23
  • 2021-06-25
  • 2022-02-19
猜你喜欢
  • 2021-11-29
  • 2022-12-23
  • 2022-01-13
  • 2021-06-15
  • 2021-06-20
  • 2022-12-23
  • 2021-09-24
相关资源
相似解决方案