作者:旺仔牛奶糖2702938317 | 来源:互联网 | 2023-07-16 05:18
窄卷积vs宽卷积在上文中解释卷积运算的时候,我忽略了如何使用滤波器的一个小细节。在矩阵的中部使用3x3的滤波器没有问题,在矩阵的边缘该怎么办呢?左上角的元素没有顶部和左侧相邻的元素,该如何滤波呢?
窄卷积 vs 宽卷积
在上文中解释卷积运算的时候,我忽略了如何使用滤波器的一个小细节。在矩阵的中部使用3x3的滤波器没有问题,在矩阵的边缘该怎么办呢?左上角的元素没有顶部和左侧相邻的元素,该如何滤波呢?解决的办法是采用补零法(zero-padding)。所有落在矩阵范围之外的元素值都默认为0。这样就可以对输入矩阵的每一个元素做滤波了,输出一个同样大小或是更大的矩阵。补零法又被称为是宽卷积,不使用补零的方法则被称为窄卷积。1D的例子如图所示:
当滤波器长度相对输入向量的长度较大时,你会发现宽卷积很有用,或者说很有必要。
所以,在NLP中,如果滤波器的长度相对于输入向量的长度比较大
,要记住使用宽卷积。在上图中,窄卷积输出的长度是 (7-5)+1=3,宽卷积输出的长度是(7+2*4-5)+1=11。
一般形式为:
在tensorflow的实现中,conv2d的padding=‘SAME',默认的就是宽卷积的方式,会进行补零。padding = ’VALID'就是窄卷积的方式。