卷积核一般都把size设为奇数,主要有两个原因:
-
保证 锚点 刚好在中间,方便以 central pixel 为标准进行滑动卷积,避免了位置信息发生 偏移 。
-
保证填充(Padding),在图像之间添加额外的零层,图像的两边相 对称,以使输出图像的大小与输入相同。
padding方式“SAME”和“VALID
“VALID”:只会丢掉最右边的列(或最底部的行)
“SAME”:尝试向左或右均匀填充,但如果添加的列数是奇数,它将向右添加偶数,向左侧添加奇数个列(向下添加偶数个列,向上添加奇数个列)为了不影响原来的图像像素信息,一般以0来填充。这就不难理解不同的padding方式输出的形状会有所不同了。
在CNN用处理文本时,一般卷积层设置卷积核的大小为n×k,其中k为输入向量的维度(即[n,k,input_channel_num,output_channel_num]),这时候我们就需要选择“VALID”填充方式,这时候窗口仅仅是沿着一个维度扫描而不是两个维度,可以理解为统计语言模型当中的N-gram。
参考:https://blog.youkuaiyun.com/wuzqchom/article/details/74785643