卷积神经网络(CNN)之网络结构解析

CNN的层级结构

[参考CNN的网络结构](https://blog.csdn.net/u014303046/article/details/86021346)

一、数据的输入层
二、卷积计算层(核心部分)

  • 1、传统的电脑进行图片匹配:
    我们给定一个字母X的图片,若电脑中存在一张一模一样的图片,我们将其进行比对则可以识别;若X经过放缩或者旋转后,则电脑可能就无法识别(照片中对应点的像素值不同)
  • 2、CNN识别:
    在这里插入图片描述
    (1)CNN可以对一些经过变化后的图片进行识别,它是通过将未知图片的局部和标准图片的局部进行一个局部的对比,如上图。将两者局部对比的过程,则为卷积的操作,结果为1则表示匹配,否则表示不匹配。

在这里插入图片描述
(2)对于CNN来说,它是一块一块地来进行比对。它拿来比对的这个“小块”我们称之为feature(特征)。在两幅图中大致相同的位置找到一些粗糙的特征进行匹配,CNN能够更好的看到两幅图的相似性,相比起传统的整幅图逐一比对的方法。其中每一个feature就像是一个小图(就是一个比较小的有值的二维数组)。不同的feature匹配图像中不同的特征。在字母"X"的例子中,那些由对角线和交叉线组成的features基本上能够识别出大多数"X"所具有的重要特征。

在这里插入图片描述
这是标准X中的features;这些features几乎可以匹配含有X的图中,字母X的四个角和它的中心,具体匹配如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)上图中每一个小块之间的匹配则为卷积操作。对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看作一个恒定的滤波器filter)做内积(逐个元素相乘再进行求和)的操作就是卷积操作。
在这里插入图片描述
(4)同一张图片中的像素点是固定的,我们可以通过不同的滤波矩阵(共享权值矩阵)得出我们从图片中想要得到的不同特征,在下图中我们通过两组不同的滤波,分别得出了颜色深浅信息和轮廓信息

在这里插入图片描述

  • 3、卷积层的计算
    (1)在CNN中,滤波器filter(带着一组固定共享的权重神经元)对局部输入的数据进行卷积计算。每次计算完一个数据窗口内的数据后,数据窗口平滑移动,直到计算完所有的数据。在计算中有如下几个参数:
    深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器的个数
    步长stride:决定一次移动几步,一共多少步可以到达边缘
    填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑到末尾的位置,也可以通过这种方法来控制输出数据的大小
    在这里插入图片描述
    (2)如下在实际的三通道彩色图片的计算
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    上图的计算可以得出:
    P1:输入层为773(77表示的是图像的像素,外圈的0是我们自己补充的,3代表的是R、G、B三通道)
    P2:存在两个神经元(滤波器W0、滤波器W1),即depth=2
    P3:步长为2,每次滑动的距离为2,即stride = 2
    P4:在周围补充了一圈零,zero-padding = 1
    P5:输出为最右侧两个不同的3
    3的数值矩阵
    P6:每一次平滑移动后的新数据都会进行不同的计算,这些新数据的计算就相当于局部感知机制。

height = (H-F)/S+1;width = (W-F)/S+1;H、W分别指输入图的尺寸,F为卷积核大小,S表示步长

4、卷积核大小的选取
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
三、激励层
1、引入激活函数的目的是,在模型中引入非线性。如果没有激活函数,无论神经网络有多少层,最终都是一个线性映射,单纯的线性映射,无法解决线性不可分问题。引入非线性可以让模型解决线性不可分问题。
2、 R e l u ( z ) Relu(z) Relu(z)激活函数
(1)relu函数计算简单,可以加快模型的计算速度
在这里插入图片描述
四、池化层(pooling)
1、池化,实际是一个下采样的过程。由于输入的图片尺寸可能比较大,这时候,我们可以通过下采样来减小图片的尺寸。池化层,可以减小模型的规模,提高运算的速度以及提高所提取特征的鲁棒性。
2、池化操作也有核大小 f f f和步长 s s s参数,它们的含义和卷积参数的意义相同
3、介绍常用的两种池化(最大池化(Max Pooling)和平均池化(Average Pooling))
(1)最大池化
所谓最大池化,就是对于 f × f f×f f×f大小的池化核,选取原图中数值最大的那个保留下来。比如,池化核 2 ∗ 2 2*2 22大小,步长为2的池化过程如下(左边是池化前,右边是池化后),对于每个池化区域都取最大值:
(2)平均池化:
所谓平均池化,就是对于 f × f f×f f×f大小的池化核,选取原图中的平均数值进行计算。比如,池化核 2 ∗ 2 2*2 22大小,步长为2的池化过程如下(左边是池化前,右边是池化后),对于每个池化区域都取平均值:
在这里插入图片描述
五、卷积神经网络的前向传播过程
在这里插入图片描述

1、传播流程(多个卷积、池化…类似全连接神经网络中的多层隐藏层结构)
(1)输入数据:三通道彩色图像WH3
(2)卷积操作:卷积过程采用n个卷积核,每个卷积核都有三个通道(卷积核的通道和输入图片的通道数目相同),随着特征图的通道数不同,每次的通道数可能都会发生改变。
(3)激活操作:将卷积后的结果进行激活(个人认为偏置应该在激活前处理)
(4)池化操作
(5)将(4)得到的结果为( W ′ ∗ H ′ ∗ n W\prime*H\prime*n WHn)进行下一步的卷积操作(此时卷积核的层数应该为n),重复(2)(3)(5)操作,直到最后的全连接操作。
(6)全连接结构和BP网络类似。我们需要设计合适的损失函数,反向传播最小化的损失函数,优化网络的参数,达到模型的预期效果

2、一些卷积网络中的符号表示
(1)卷积conv2d(input,filter,strides,padding)

  • input:卷积输入 ( H × W × C i n , C i n ​ 指 的 是 输 入 的 通 道 数 ) (H×W×C_{in},C_in​指的是输入的通道数) (H×W×Cin,Cin)
  • filter:卷积核W ( f h e i g h t × f w i d t h × C i n × C o u t ) (f_{height}×f_{width}×C_{in}×C_{out}) (fheight×fwidth×Cin×Cout)
  • strides:步长,一般为1×1×1×11×1×1×1
  • padding:指明padding的算法,‘SAME’或者‘VALID’(SAME表示维持原有的维度不变)

(2)激活relu(conv)

  • conv:卷积的结果

(3)偏置相加add(conv,b)

  • conv:卷积的激活输出
  • b:偏置系数

(4)池化max_pool(value,ksize,strides,padding)

  • value:卷积的输出
  • ksize:池化尺寸 一般为2*2
  • strides:步长
  • padding:指明padding的算法,‘SAME’(输出为等大的矩阵)或者‘VALID’

六、卷积神经网络的反向传播过程
1、对比全连接神经网络的反向传播过程。卷积神经网络的反向传播过程与其类似,但是并不是一样的,区别如下
(1)卷积神经网络的卷积核,每次滑动只与部分输入相连,具有局部映射的特点,在误差反向传播的时候,需要确定卷积核的局部连接方式。
(2)卷积神经网络的池化过程中丢失了大量的信息,误差反传,则需要恢复这些丢失的信息
2、卷积层的误差反传
(1)假设损失函数为Loss,现在通过损失函数对参数W和偏置b的梯度进行求解。
(2)卷积核W的梯度

  • Z [ l ] = c o n v 2 d ( Z p o o l [ l − 1 ] , ( W , b ) , s t r i d e s = 1 , p a d d i n g = ′ S A M E ′ ) Z{^{[l]}} = conv2d(Z{^{[l-1]}_{pool}},(W,b),strides = 1,padding='SAME') Z[l]=conv2d(Zpool[l1],(W,b),strides=1,padding=SAME) = ∑ m ∑ n W m ′ , n ′ [ l ] Z p o o l _ m , n [ l − 1 ] + b [ l ] =\sum^m\sum^nW{_{m',n'}^{[l]}}Z{_{pool\_m,n}^{[l-1]}}+b^{[l]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值