简单介绍CNN卷积神经网络的概念和原理。html
已经了解的小伙伴能够跳转到Tensorflow学习笔记No.4.2学习如和用Tensorflow实现简单的卷积神经网络。算法
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元能够响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 网络
卷积神经网络一般包含如下几种层:ide
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。
1.1.3卷积(Convolution)
这里简单介绍一下卷积的工做原理:
考虑一个大小为5×5的图像,和一个3×3的卷积核。这里的卷积核共有9个参数。这种状况下,卷积核实际上有9个神经元,他们的输出又组成一个3×3的矩阵,称为特征图。第一个神经元链接到图像的第一个3×3的局部,第二个神经元则链接到第二个局部(注意,有重叠!就跟你的目光扫视时也是连续扫视同样)。具体以下图所示。
池化(pool)即下采样(downsamples),目的是为了减小特征图。池化操做对每一个深度切片独立,规模通常为 2*2,相对于卷积层进行卷积运算,池化层进行的运算通常有如下几种:
* 最大池化(Max Pooling)。取4个点的最大值。这是最经常使用的池化方法。
* 均值池化(Mean Pooling)。取4个点的均值。
* 高斯池化。借鉴高斯模糊的方法。不经常使用。
* 可训练池化。训练函数 ff ,接受4个点为输入,出入1个点。不经常使用。
最多见的池化层是规模为2*2, 步幅为2,对输入的每一个深度切片进行下采样。每一个MAX操做对四个数进行,以下图所示:
池化操做将保存深度大小不变。
若是池化层的输入单元大小不是二的整数倍,通常采起边缘补零(zero-padding)的方式补成2的倍数,而后再池化。
将卷积层与池化层中获得的张量的维度进行变换,转变成能够进行分类的一维数据。
4.2中将介绍如何用Tensorflow实现CNN卷积神经网络。