CNN为什么卷积核的大小都是奇数

CNN的卷积核大小都是奇数而没有偶数主要有以下两点原因:

1、奇数卷积核有中心像素点

如下图中,奇数大小的卷积核有唯一的中心像素点,而偶数大小的卷积核没有中心像素点

                  

为什么需要中心像素点?因为中心像素点有以下两点左右:

  • 确定局部卷积后要更新的像素点位置。如下图的卷积操作,中心像素的位置对应着当前卷积操作wx+b的值要赋给那个位置。如果卷积核是偶数,中心位置有四个像素。一种可能的解决方式是同时更新这四个像素的值,但这样会增加计算量。同时以步长stride=1移动卷积核时,会覆盖之前的值,造成计算浪费。

  • 便于进行卷积操作,以中心点移动卷积核,(这点好像有点牵强,以左上角或右下角任一点像素也可移动卷积核)

2、奇数的卷积核便于图像进行对称的补0padding

卷积有好几种方式如valid,same。其中same卷积的方式如上面卷积示例图所示,是为了保持卷积后特征图大小不变,在卷积操作进行前先在图像的周围补0。假设卷积前特征图大小为m,卷积核大小为k,那么正常情况下卷积后特征图大小n应该为m-k+1。既

为了使卷积后特征图大小保持不变,在卷积前把特征图的尺寸增大k-1。然后在进行卷积操作。此时

也就是卷积操作前后特征图大小相等。

为了使特征图增大k-1。通常使用的方式是在图像周围补0。如果卷积核的大小是奇数,则k-1为偶数。则可以在图像两侧进行对称的padding。左右上下各补充(k-1)/2。 

### Conv1D 中卷积核大小的默认值 在 TensorFlow 的 Keras API 中,`tf.keras.layers.Conv1D` 是用于一维卷积操作的核心层之一。该函数定义了一个参数 `kernel_size` 来指定卷积核大小。然而,默认情况下,`kernel_size` 并未设置任何固定值[^1]。 这意味着如果用户不显式提供 `kernel_size` 参数,则会抛出错误提示缺少必要参数。因此,在实际应用中,开发者需要手动设定此参数以满足具体需求。例如: ```python import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.Conv1D(filters=64, kernel_size=3, input_shape=(None, 128)) ]) ``` 上述代码片段展示了如何通过传递整数值(如 `3`)给 `kernel_size` 参数来创建具有特定尺寸的一维卷积核。 值得注意的是,尽管 `kernel_size` 没有预设默认值,但在某些高级封装或者模型构建工具中可能会存在约定俗成的选择。比如一些教程或案例常采用较小奇数作为初始尝试选项 (e.g., 3 或者 5)[^2]。 #### 关于卷积过程的理解补充说明 对于更深层次理解而言,可以类比二维卷积 (`conv2d`) 运作机制:当输入数据经过一系列滤波器作用之后,其输出特征图中的每个位置都是由相应感受野区域内的像素点加权求和所得结果构成。同样道理适用于一维情况下的时间序列分析场景下使用的 `Conv1D` 层——只不过这里只考虑单方向上的局部模式提取而已[^2]。 ```python # 示例展示 Conv1D 使用方法及其效果 from tensorflow import keras import numpy as np data = np.random.rand(1, 10, 1).astype('float32') # 输入形状为 [batch_size, timesteps, features] layer = keras.layers.Conv1D( filters=2, kernel_size=4, strides=1, padding="same", activation='relu' ) output = layer(data) print(f'Input shape: {data.shape}') print(f'Output shape after applying Conv1D: {output.shape}') ``` 以上脚本演示了怎样利用自定义好的超参配置实例化一层简单的 Convolutional Neural Network(CNN),并观察到即使原始信号长度保持不变的情况下也能有效捕捉潜在规律特性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值