卷积神经网络(CNN)总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36655333/article/details/80324679

卷积神经网络优势:

        随着计算能力的发展,神经网络也逐渐兴起。对于大多数分类问题,我们都可以利用前向神经网络很好的解决。然而在图像处理问题上,卷积神经网络则更有优势。在图像处理中,我们往往把图像表示为像素的向量,比如一个100×100的彩色图片,为了表示该图片,我们需要使用维度为100*100*3的向量。而对于传统神经网络,假设隐藏层的节点数与输入层的相同,数据从第一层向第二层传播需要建立的权重矩阵大小为[30000,30000],也就是9亿个权值。这对我们的计算机而言,是根本无法承受的。所以,我们必须采用特殊的方法来减少参数的数目卷积神经网络则为我们提供了这样的方法。

神经网络的结构:

                           

        一般地,CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,这种特有的两次特征提取结构减小了特征分辨率。

        CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

举例:图片大小为50*50*3,这里3是指有三个通道(RGB),也就是图片是彩色的

        第一步:创建卷积层,进行特征提取。假设采用的卷积大小为5*5的,由于有三个通道,所以每个卷积为5*5*3的矩阵。

        然后,将这个5*5*3的矩阵(卷积核)放到原图片中的(0,0)的位置,3个矩阵对应三个通道,每个矩阵与自己对应通道的像素值相乘,这样得出一个5*5*3的矩阵,将这个矩阵所有元素相加,得出第一个“卷积和”。然后将卷积核移动指定的步长,再计算下一个“卷积和”。直到把整张图片都遍历完。这样我们就得到一个二维矩阵。比如我们图片每次向右移动1步,向下移动1步,经过一个卷积,我们可以生成一个大小为46*46的“卷积和”的矩阵。每次向右移动5步,向下移动5步,经过一个卷积,我们可以生成一个大小为10*10的“卷积和”矩阵(卷积的结果)。(如果padding选择为SAME,且移动步长为1,那么原图保持大小不变(通过扩充边界)),最后再将结果送入激活函数,得到的矩阵大小仍旧不变

        当然,一张图片可以经过多个卷积,这样便会形成多个“卷积和”矩阵。例如我们选择6个卷积核,则输出为50*50*6的矩阵(padding=same)

                 

     第二部:创建池化层,降低数据量

        当我们将输入的卷积和矩阵输入池化层,池化层首先需要选择池化的大小,比如我们选择为10*10,然后选则池化策略,我们选择最大值池化,这样,池化框为5*5,同样从0,0,0处开始,每次移动x步(这里选择5),这样最终输出为5*5*6的矩阵。

        我们可以重复n次上述两步,该例子中,我们只做了一次

        将5*5*6重新排列为一维向量,向量大小为150个元素,再经过一个全连接网络,得出最终的结果

代码分析关键:

def conv2d(x,W):

    return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME')


def max_pool_2x2(x):

    return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME

这里的x为输入数据,对应我们的图片,每张图片的大小我们这里为50*50*3

W为卷积核,这里为5*5*3

strides为移动步长,其格式为【1,X,Y,1】,X为水平方向移动步长,Y为竖直方向移动步长

ksize为池化框大小,格式为【1,X,Y,1】,X为框长,Y为框宽

猜你喜欢

转载自blog.csdn.net/qq_36655333/article/details/80324679
今日推荐