卷积神经网络(CNN)基础知识

一、CNN基本结构

        CNN的基本结构由输入层、卷积层(convolutional layer)、 池 化 层 (pooling layer)、全连接层及输出层构成。卷积层和池化层一般会取若干个,采用卷积层和池化层交替连接,即一个卷积层连接一个池化层,池化层后再连接一个卷积层,依此类推。由于卷积层中输出特征面的每个神经元与其输入进行局部连接 并通过对应的连接权值与局部输入进行加权求和再加上偏置值,得到该神经元输入值,该过程类似于卷积过程。
        第一层输入图片, 进行卷积操作, 得到第二层深度为 3 的特征图。对第二层的特征图进行池化操作, 得到第三层深度为 3 的特征图. 重复上述操作得到第五层深度为 5 的特征图, 最后将这 5 个特征图, 也就是 5 个矩阵, 按行展开连接成向量, 传入全连接层, 全连接层就是一个 BP 神经网络. 图中的每个特征图都可以看成是排列成矩阵形式的神经元, 与 BP神经网络中的神经元大同小异。
卷积神经网络(CNN)基础知识_第1张图片

二、卷积运算

规则:把filter铺到原矩阵中,然后把filter与原矩阵中对应的数相乘再加和。

卷积神经网络(CNN)基础知识_第2张图片 卷积神经网络的原理 - 边缘检测

卷积神经网络(CNN)基础知识_第3张图片

 

 

Filter

互关运算其实就是做矩阵点乘运算,用下面的Toy Example说明:其实就是用kernel(filter)来与像素矩阵局部做乘积,如下图,output的第一个阴影值其实是input和kernel的阴影部分进行矩阵乘法所得

卷积神经网络(CNN)基础知识_第4张图片

接下来引入一个参数,其代表我们每一次滤波器在像素矩阵上移动的步幅,步幅共分为水平步幅和垂直步幅,下图为水平步幅为2,垂直步幅为3的设置:

卷积神经网络(CNN)基础知识_第5张图片

        所以filter就不断滑过图片,所到之处做点积,那么,做完点积之后的shape是多少呢?假设input shape是32 * 32,stride 为1,filter shape 为4 * 4,那么结束后的shape为29 * 29,计算公式是((input shape - filter shape) / stride ) + 1,记住在深度学习中务必要掌握每一层的输入输出。

       那么,假如stride改为3,那么((32 - 4) / 3) + 1 不是整数,所以这样的设定是错误的,那么,我们可以通过padding的方式填充input shape,用0去填充,这里padding设为1,如下图,填充意味着输入的宽和高都会进行增加2 * 1,那么接下来的out shape 就是 ((32 + 2 * 1 - 4)/3) + 1,即为11 * 11

 卷积神经网络(CNN)基础知识_第6张图片

        接下来引入通道(channel),或为深度(depth)的介绍,一张彩色照片的深度为3,每一个像素点由3个值组成,我们的filter的输入通道或者说是深度应该和输入的一致,举例来说,一张照片32 * 32 * 3,filter可以设置为3 * 3 * 3,我们刚开始理解了一维的互关运算,三维无非就是filter拿出每一层和输入的每一层做运算,最后再组成一个深度为3的输出,这里stride设置为1,padding也为1,所以输出的shape为30 * 30 * 3。

       卷积的时候是用多个filter完成的,一般经过卷积之后的output shape 的输入通道(深度)为filter的数量,下图为输入深度为2的操作,会发现一个filter的输出最终会相加,将它的深度压为1,而不是一开始的输入通道。这是一个filter,多个filter最后放在一起,最后的深度就是filter的数量了。
卷积神经网络(CNN)基础知识_第7张图片

三、多通道卷积 

 原理和单通道卷积相同,每个通道按单通道计算,最后把对应位置的值相加;卷积核的通道数和输入图片的通道数相同,但一般卷积核上的每个通道的值是不同的(为了提取不同特征)

卷积神经网络(CNN)基础知识_第8张图片

图中的三个卷积核是指一个卷积核的三个通道(滤波器)

其实多通道卷积原理和单通道卷积,就可以想象成千层蛋糕,一层蛋糕(原图)配一层奶油(卷积核),最后把它们每一层算完后,再叠在一块,压厚实了(对应位置相加),成为了一层蛋糕(输出特征图)。

卷积神经网络(CNN)基础知识_第9张图片 

 

你可能感兴趣的:(cnn,深度学习,神经网络)