文章目录
声明
本文参考吴恩达深度学习视频,b站可以搜到。
前言
本文的结构是:
- 卷积神经网络
- 边缘检测(垂直边缘检测、水平边缘检测)
- padding
- 卷积层conv
- 池化层pool
- 全连接层fullyconnected
一、卷积神经网络
1.1、feature
参数共享、稀疏连接;
善于捕捉平移不变。
二、边缘检测(垂直边缘检测、水平边缘检测)
2.1、why
对二维的图形进行垂直边缘检测,输入6x6的图片,*3x3的过滤器矩阵,得到4x4的矩阵输出(各个元素相乘,然后加起来)。
如图所示,原图片,左边白,右边黑,就有一个特别明显的垂直边缘在图像中间,*一个过滤器矩阵后,得到图像,两边黑,中间亮,就表明在图像中间有一个特别明显的垂直边缘。
同理可得,水平边缘检测,*的过滤器矩阵是上面的过滤器矩阵的转置
总之,使用不同的过滤器,就可以找到垂直或者水平的边缘。
soble过滤器:
scharr过滤器:
2.2、维度
输入nxn的图像,用fxf的过滤器做卷积,那么输出的维度就是(n-f+1)x(n-f+1)。
2.3、三维图片的卷积
输入6x6x3的图片,3代表RGB三个颜色的通道,再与一个3x3x3的过滤器做卷积。下图中,图像与第一个垂直边缘过滤器进行卷积得到一个紫色输出,又与第二个水平边缘过滤器进行卷积得到一个蓝色输出,将这两个输出堆叠在一起,得到4x4x2的输出立方体。
若只想对红色通道进行卷积,则过滤器的第一层为
第二层第三层均为0。若三个通道都要卷积,则过滤器为:
2.3.1、维度
有一个的输入图像,就是通道数目,然后卷积一个的过滤器,得到了(n-f+1)x(n-f+1)x 的输出。其中,步幅s=1,并且没有padding。
三、卷积填充padding和卷积步长
3.1、why使用padding
在进行边缘检测的时候,原图像*过滤器矩阵,得到的图像会缩小,如果多进行几次边缘检测,得到的图片就越来越小,在这个过程中图片的信息也会不断损失,为了保证输出图像和原图像大小一致,我们就要对原始图片的边缘再填充一层像素。维度:输入nxn的图像,用fxf过滤器做卷积,p是填充的数量,输出也变成了(n+2p-f+1)x(n+2p-f+1)。填充的方法:
valid卷积:p=0,意味着不填充,会得到(n-f+1)x(n-f+1)的输出
same卷积:意味着要填充,输出大小和输入大小一致,会得到(n+2p-f+1)x(n+2p-f+1)的输出。若让,则
,当f是一个奇数时,只要选择相应的填充尺寸,就能确保得到和输入相同尺寸的输出。
3.2、卷积步长
之前的图像*过滤器矩阵,每次都移动一个步长。如果输入nxn的图像,用fxf的过滤器做卷积,填充p,步幅s,得到
向下取整的矩阵。
四、单层卷积网络
4.1、卷积层conv
如下图所示,在三维图片的卷积中,一个具有RGB通道的图片,与三维的垂直和水平过滤器相卷积,得到两个4x4的矩阵,然后利用python的广播机制给一个矩阵再加同一个偏差,另一个矩阵加上另一个偏差,这个偏差是实数。然后应用非线性函数relu,输出结果是两个4x4的矩阵。在把这两个矩阵堆叠起来,最终得到一个4x4x2的矩阵。
在前向传播中,,执行非线性函数得到,即。
在卷积过程中,我们对两个过滤器这272个数进行操作,我们取这些数做乘法,实际执行了一个线性函数,得到一个4x4的矩阵,它的作用类似与。再加上实数偏差,得到一个4x4的矩阵,它的作用类似,最后应用非线性函数,得到一个4x4x2矩阵,成为神经网络的下一层,也就是**层。
从到的演变过程,首先执行线性函数,然后所有元素相乘做卷积,具体做法是运用线性函数再加上偏差,然后应用**函数relu。这样就通过神经网络的一层把一个6x6x3的维度演化为一个4x4x2维度的,这就是卷积神经网络的一层。注意:无论图片有多大,参数始终是272个。用2个过滤器提取特征,如垂直边缘、水平边缘,即使这些图片很大,参数却很少,这就是卷积神经网络的一个特征,叫作“避免过拟合”。
4.1.1、总结
:层中过滤器大小为fxf
:层中padding的数量
:层中步幅大小
:过滤器的个数
:上一层的**值。层中的输入图像大小。
:层中输出图像大小。
图像的高度:
向下取整。
图像的宽度:
向下取整。
每个过滤器大小:
**函数:
若有m个样本,则有m个**值的集合:
权重W:,也就是所有过滤器的集合再乘以过滤器的总数量。
偏差参数b:
4.2、池化层pool
4.2.1、意义
使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。
最大池化层
选取每个过滤器矩阵的最大值。
最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里。所以最大化运算的实际作用就是如果在过滤器中提取到某个特征,那么保留最大值,如果没有提取到这个特征,可能在右上象限中不存在这个特征,那么其中的最大值也还是很小。
平均池化层
选取的不是每个过滤器的最大值,而是平均值。
4.3、全连接层fullyconnected
假设池化层得到一个5x5x16的矩阵,将其平整化为一个大小为400的一维向量,可以将这个平整化结果想象成这样的一个神经元集合,这就是我们的第一个全连接层,