CNN中各种卷积核

一、卷积概念

通俗易懂的说,就是,输出 = 输入 * 系统。

对于图像处理来说,用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到该点的卷积值。对图像上的每个点都这样处理。由于多数模板都对称,所以模板不旋转。

卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。 把一个点的像素值用它周围的点的像素值的加权平均代替。
 

二、CNN中的一些卷积

1:普通卷积:没啥好说的,比较大众的一种卷积。

其有两个缺点

  • 一是使用局部操作,不能直接得到比较大的范围甚至图像全局的特征,且卷积核是固定的形状如3x3大小,对物体的形状、姿态变化缺少适应性。
  • 二是当特征的通道数量大了以后,卷积核的参数也变得庞大,会增加许多运算开销。

Feature Map尺寸计算公式:

假设输入 (N, C_{in}, H_{in}, W_{in}) ,卷积操作后输出 

### 卷积神经网络中卷积核的更新方法 卷积神经网络(CNN)中的卷积核更新是通过反向传播算法实现的,这一过程与传统人工神经网络中的权重更新类似。在反向传播过程中,误差从输出层逐层向前传播,每一层的参数(包括卷积核权重和偏置)根据梯度下降法进行更新[^1]。 #### 反向传播的基本原理 在卷积神经网络中,反向传播的核心目标是计算损失函数相对于卷积核权重的梯度,并通过梯度下降法调整权重以最小化损失函数。具体而言,卷积核的更新公式可以表示为: ```python W = W - η * ∂L/∂W ``` 其中: - \( W \) 表示卷积核权重; - \( η \) 是学习率,控制每次更新的步长; - \( ∂L/∂W \) 是损失函数 \( L \) 对卷积核权重 \( W \) 的梯度[^2]。 #### 梯度计算 为了更新卷积核权重,需要计算损失函数对卷积核的梯度 \( ∂L/∂W \)。这一过程分为以下几个方面: 1. **前向传播**:在前向传播阶段,输入数据经过卷积操作生成特征图。假设输入数据为 \( X \),卷积核为 \( W \),则卷积操作的结果为 \( Z = W * X + b \),其中 \( * \) 表示卷积运算,\( b \) 为偏置[^3]。 2. **误差传播**:在反向传播阶段,误差从输出层逐层向前传播。对于卷积层,误差项 \( δ \) 表示当前层的误差对输出的影响。误差项通过链式法则计算,最终得到损失函数对卷积核权重的梯度 \( ∂L/∂W \)。 3. **梯度更新**:根据计算得到的梯度 \( ∂L/∂W \),使用梯度下降法更新卷积核权重。更新公式如下: ```python W = W - η * ∂L/∂W ``` #### 卷积核更新的具体步骤 在实际实现中,卷积核的更新可以通过以下代码片段展示: ```python import numpy as np # 假设 dL_dZ 是损失函数对卷积层输出的梯度 def update_conv_kernel(X, dL_dZ, W, learning_rate): # 计算损失函数对卷积核的梯度 dL_dW = np.zeros_like(W) for i in range(X.shape[0]): for j in range(X.shape[1]): dL_dW += X[i, j] * dL_dZ[i, j] # 更新卷积核权重 W = W - learning_rate * dL_dW return W ``` 上述代码展示了如何基于输入数据 \( X \) 和误差梯度 \( dL_dZ \) 计算卷积核梯度 \( dL_dW \),并更新卷积核权重[^2]。 ### 注意事项 在卷积神经网络中,卷积核的更新还需要考虑以下几个因素: 1. **池化层的影响**:如果网络中包含池化层,则需要将误差从池化层回传到卷积层。 2. **激活函数的梯度**:如果卷积层后接有激活函数(如 ReLU),则需要考虑激活函数的梯度对误差传播的影响。 3. **正则化项**:为了防止过拟合,可以在损失函数中加入正则化项(如 L2 正则化),从而影响权重更新公式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值