Tensorflow学习笔记No.4.1

使用CNN卷积神经网络(1)

简单介绍CNN卷积神经网络的概念和原理。html

已经了解的小伙伴能够跳转到Tensorflow学习笔记No.4.2学习如和用Tensorflow实现简单的卷积神经网络。算法

1.CNN简介(概念简介)

  卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元能够响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 网络

卷积神经网络一般包含如下几种层:ide

  • 卷积层(Convolutional layer),卷积神经网路中每层卷积层由若干卷积单元组成,每一个卷积单元的参数都是经过反向传播算法优化获得的。卷积运算的目的是提取输入的不一样特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
  • 线性整流层(Rectified Linear Units layer, ReLU layer),这一层神经的活性化函数(Activation function)使用线性整流(Rectified Linear Units, ReLU)。
  • 池化层(Pooling layer),一般在卷积层以后会获得维度很大的特征,将特征切成几个区域,取其最大值或平均值,获得新的、维度较小的特征。
  • 全链接层( Fully-Connected layer), 把全部局部特征结合变成全局特征,用来计算最后每一类的得分。

1.1卷积层(Convolutional layer)

  1.1.1局部感知(Local Connectivity)函数

  普通神经网络把输入层和隐含层进行“全链接(Full Connected)“的设计。从计算的角度来说,相对较小的图像从整幅图像中计算特征是可行的。可是,若是是更大的图像(如 96x96 的图像),要经过这种全联通网络的这种方法来学习整幅图像上的特征,从计算角度而言,将变得很是耗时学习

  卷积层解决这类问题的一种简单方法是对隐含单元和输入单元间的链接加以限制:每一个隐含单元仅仅只能链接输入单元的一部分。每一个隐含单元链接的输入区域大小叫R神经元的感觉野(receptive field)优化

  因为卷积层的神经元也是三维的,因此也具备深度。卷积层的参数包含一系列过滤器(filter),每一个过滤器训练一个深度,有几个过滤器输出单元就具备多少深度。spa

  具体以下图所示,样例输入单元大小是32×32×3, 输出单元的深度是5, 对于输出单元不一样深度的同一位置,与输入图片链接的区域是相同的,可是参数(过滤器)不一样。设计

示例

  1.1.2空间排列(Spatial arrangement)3d

  一个输出单元的大小有如下三个量控制:depth, stride 和 zero-padding。

  • 深度(depth) : 顾名思义,它控制输出单元的深度,也就是filter的个数,链接同一块区域的神经元个数。又名:depth column
  • 步幅(stride):它控制在同一深度的相邻两个隐含单元,与他们相链接的输入区域的距离。若是步幅很小(好比 stride = 1)的话,相邻隐含单元的输入区域的重叠部分会不少; 步幅很大则重叠区域变少。
  • 补零(zero-padding) : 咱们能够经过在输入单元周围补零来改变输入单元总体大小,从而控制输出单元的空间大小。

  1.1.3卷积(Convolution)

  这里简单介绍一下卷积的工做原理

  考虑一个大小为5×5的图像,和一个3×3的卷积核。这里的卷积核共有9个参数。这种状况下,卷积核实际上有9个神经元,他们的输出又组成一个3×3的矩阵,称为特征图。第一个神经元链接到图像的第一个3×3的局部,第二个神经元则链接到第二个局部(注意,有重叠!就跟你的目光扫视时也是连续扫视同样)。具体以下图所示。

卷积

1.2池化层(Pooling Layer)

  池化(pool)即下采样(downsamples),目的是为了减小特征图。池化操做对每一个深度切片独立,规模通常为 2*2,相对于卷积层进行卷积运算,池化层进行的运算通常有如下几种:
  * 最大池化(Max Pooling)。取4个点的最大值。这是最经常使用的池化方法。
  * 均值池化(Mean Pooling)。取4个点的均值。
  * 高斯池化。借鉴高斯模糊的方法。不经常使用。
  * 可训练池化。训练函数 ff ,接受4个点为输入,出入1个点。不经常使用。

最多见的池化层是规模为2*2, 步幅为2,对输入的每一个深度切片进行下采样。每一个MAX操做对四个数进行,以下图所示:
池化

  池化操做将保存深度大小不变

  若是池化层的输入单元大小不是二的整数倍,通常采起边缘补零(zero-padding)的方式补成2的倍数,而后再池化。

1.3全链接层(Fully-connected layer)

  将卷积层与池化层中获得的张量的维度进行变换,转变成能够进行分类的一维数据。

 

4.2中将介绍如何用Tensorflow实现CNN卷积神经网络。

相关文章
相关标签/搜索