cnn程序流程图_卷积神经网络(CNN)原理及应用
一、CNN原理
卷积神经网络(CNN)主要是用于图像识别领域,它指的是一类网络,而不是某一种,其包含很多不同种结构的网络。不同的网络结构通常表现会不一样。从CNN的一些典型结构中,可以看到这些网络创造者非常有创造力,很多结构都非常巧妙,有机会再介绍现今主流的一些典型结构。 现在我们先来简单介绍一下卷积神经网络的原理。
Very Deep Convolutional Networks for Large-Scale Image Recognition(2014), arXiv: 1409.1556:
所有CNN最终都是把一张图片转化为特征向量,特征向量就相当于这张图片的DNA。就像上图VGG网络一样,通过多层的卷积,池化,全连接,降低图片维度,最后转化成了一个一维向量。这个向量就包含了图片的特征,当然这个特征不是肉眼上的图片特征,而是针对于神经网络的特征。
之所以用VGG举例,因为他的网络结构非常简洁,清晰,相当好理解,简单介绍一下:他的输入是一张224x224 的三通道图片,经过两层卷积之后,图片维度不变,通道数增加到了64。
之后那个红色的层是最大池化(max pooling)把图片维度变成了112x112。后续就是不断重复步骤1,2。
当变成1维向量之后,经过全连接(fully connected)加ReLU激活,softmax处理之后,变成了一个包含1000个数字的特征向量。
以上就是CNN所做的事情。
二、 CNN如何训练
1. 卷积神经网络的前向传播过程
在前向传播过程中,输入的图形数据经过多层卷积层的卷积和池化处理,提出特征向量,将特征向量传入全连接层中,得出分类识别的结果。当输出的结果与我们的期望值相符时,输出结果。
1.1 前向传播中的卷积操作用一个小的权重矩阵去覆盖输入数据,对应位置加权相乘,其和作为结果的一个像素点;
这个权重在输入数据上滑动,形成一张新的矩阵:
这个权重矩阵称为卷积核(convolution kernel);
其覆盖位置称为感受野(receptive field);
参数共享;
滑动的像素数量叫做步长(stride):
以卷积核的边还是中心点作为开始/结束的依据,决定了卷积的补齐(padding)方式。上面的图片是valid方式(这种方式新的矩阵维度可能会降低),而same方式则会在图像边缘用0补齐(这种方式图像维度不会降低):
如果输入通道不只一个,那么卷积核是三阶的。所有通道的结果累加:
如图:
1.2 前向传播中的池化操作
池化又称为降采样(down_sampling),类型:最大池化(max pooling):在感受野内取最大值输出;
平均池化(average pooling):在感受野内取平均值进行输出;
其他如L2池化等。
理
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
