Skip to content

CNN 卷积神经网络

Convolutional Neural Network

CNN 的结构可以分为 5 层:

  1. 输入层 Input Layer
  2. 卷积层 Convolutional Layer 提取图像的底层特征
  3. 池化层 Max Pooling Layer 防止过拟合,将数据维度减少
  4. 全连接层 Fully Connected Layer
  5. 输出层 Output Layer

输入层

卷积层

卷积运算公式:

S(i,j)=mnX(i+m,j+n)K(m,n)

符号说明

输入矩阵XRH×W 表示二维输入特征图(如图像矩阵)

卷积核KRkh×kw 表示二维滤波器(filter),通常满足 khHkwW

输出矩阵S(i,j) 表示输出特征图在位置 (i,j) 处的激活值

索引范围m{0,1,...,kh1} , n{0,1,...,kw1}

对于输入尺寸为 Hin×Win 的特征图,当使用卷积核尺寸为 k×k 且步长为 step 时,输出尺寸为:

Hout=Hinkstep+1Wout=Winkstep+1
  • 示例

输入矩阵:

X=[0112011011010201]

TIP

每次计算的时候,边缘只被计算一次,而中间被多次计算,那么得到的特征图也会丢失边缘特征,最终会导致特征提取不准确,那为了解决这个问题,我们可以在原始的输入图像的二维矩阵周围再拓展一圈或者几圈,在这里我们扩展一圈。

这种通过拓展解决特征丢失的方法又被称为 Padding

卷积核为:

K=[110101110]

以左上角第一个有效位置为例:

S(0,0)=(0×1)+(0×1)+(0×0)+(0×1)+(0×0)+(1×1)+(0×1)+(0×1)+(1×0)=0+0+0+0+0+1+0+0+0=1

kernel_1

全部计算过程如下(step=1):

alt text

池化层

池化层

图:池化层

全连接层