您的位置:主页 > 星际注册娱乐 >

深入浅出Tensorflow(四):卷积神经网络

日期:2018-08-18 21:50
在前面的文章中所介绍的神经网络每两层之间的所有结点都是有边相连的,所以我们称这种网络结构为全连接层网络结构。图2显示了全连接神经网络与卷积神经网络的结构对比图。虽然图2中显示的全连接神经网络结构和卷积神经网络的结构直观上差异比较大,但实际上它们的整体架构是非常相似的。从图2中可以看出,卷积神经网络也是通过一层一层的节点组织起来的。和全连接神经网络一样,卷积神经网络中的每一个节点都是一个神经元。在全连接神经网络中,每相邻两层之间的节点都有边相连,于是一般会将每一层全连接层中的节点组织成一列,这样方便显示连接结构。而对于卷积神经网络,相邻两层之间只有部分节点相连,为了展示每一层神经元的维度,一般会将每一层卷积层的节点组织成一个三维矩阵。在一个卷积层中,过滤器所处理的节点矩阵的长和宽都是由人工指定的,这个节点矩阵的尺寸也被称之为过滤器的尺寸。常用的过滤器尺寸有33或55。因为过滤器处理的矩阵深度和当前层神经网络节点矩阵的深度是一致的,所以虽然节点矩阵是三维的,但过滤器的尺寸只需要指定两个维度。过滤器中另外一个需要人工指定的设置是处理得到的单位节点矩阵的深度,这个设置称为过滤器的深度。注意过滤器的尺寸指的是一个过滤器输入节点矩阵的大小,而深度指的是输出单位节点矩阵的深度。如图4所示,左侧小矩阵的尺寸为过滤器的尺寸,而右侧单位矩阵的深度为过滤器的深度。在图5中,只讲解了移动过滤器的方式,没有涉及到过滤器中的参数如何设定。在卷积神经网络中,每一个卷积层中使用的过滤器中的参数都是一样的。这是卷积神经网络一个非常重要的性质。从直观上理解,共享过滤器的参数可以使得图像上的内容不受位置的影响。以MNIST手写体数字识别为例,无论数字1出现在左上角还是右下角,图片的种类都是不变的。因为在左上角和右下角使用的过滤器参数相同,所以通过卷积层之后无论数字在图像上的哪个位置,得到的结果都一样。共享每一个卷积层中过滤器中的参数可以巨幅减少神经网络上的参数。以Cifar-10问题为例,输入层矩阵的维度是32323。假设第一层卷积层使用尺寸为55,深度为16的过滤器,那么这个卷积层的参数个数为55316+16=1216个。上文提到过,使用500个隐藏节点的全连接层将有150万个参数。相比之下,卷积层的参数个数要远远小于全连接层。而且卷积层的参数个数和图片的大小无关,它只和过滤器的尺寸、深度以及当前层节点矩阵的深度有关。这使得卷积神经网络可以很好地扩展到更大的图像数据上。这一层的输入就是原始的图像像素,LeNet-5模型接受的输入层大小为32321。第一个卷积层过滤器的尺寸为55,深度为6,不使用全0填充,步长为1。因为没有使用全0填充,所以这一层的输出的尺寸为32-5+1=28,深度为6。这一个卷积层总共有5516+6=156个参数,其中6个为偏置项参数。因为下一层的节点矩阵有28286=4704个节点,每个节点和55=25个当前层节点相连,所以本层卷积层总共有4704(25+1)=122304个连接。这一层的输入为第一层的输出,是一个28286的节点矩阵。本层采用的过滤器大小为22,长和宽的步长均为2,所以本层的输出矩阵大小为14146。原始的LeNet-5模型中使用的过滤器和本文中介绍的有些细微差别,这里不做具体介绍。本层的输入矩阵大小为14146,使用的过滤器大小为55,深度为16。本层不使用全0填充,步长为1。本层的输出矩阵大小为101016。按照标准的卷积层,本层应该有55616+16=2416个参数,101016(25+1)=41600个连接。
星际注册娱乐 返回头部