目录
二、使用tensorflow Estimator构建CNN MNIST分类器
一、卷积神经网络CNN的结构
卷积神经网络通常包含卷积层、池化层和全连接层,下面是利用CNN对图片分类的结构图示例:
1、卷积层CONV
将指定数量的卷积过滤器应用于图像。对于每个子区域,该层会执行一组数学运算,以在输出特征图中生成单个值。然后卷积层通常会向输出应用RELU激活函数,以便在模型中引入非线性规律。
过滤器:
获取输入网络层局部区域(包含输入网络层所有深度区域)的某方面特征,过滤器移动覆盖上层网络的所有区域,输入网络层相同深度的数据共享同一个过滤器。如下图所示,红色局部区域,通过一个过滤器,对应一个(下一网络层)蓝色神经元,五个神经元代表应用了五个过滤器,分别获取了五个方面的特征。输入层32*32*3,过滤器的大小为5*5,每一个神经元参数个数为5*5*3+1。
输出层:
输出层长、宽计算 = (W-F+2P)/S+1
W为输入层大小,F为过滤器大小,P为0填充维度,S为滑动步长。以下图为例,只展示一维数据,输入层为5*5(W),过滤层为3*3(F),0填充维度为1(P)。若步长为1(S),输出层为5*5;若步长为2,输出层为3*3。其中[1,0,-1]是过滤器权重。
输出层深度 = 过滤器个数
卷积层的计算过程:
下图是一个卷积层计算过程,输入层为5*5*3,0填充维度为1,过滤器大小为3*3,移动步长为2,过滤器个数为2个,输出层维度为3*3*2 ( (5+2*1-3)/2+1=3 )。
卷积神经网络与传统神经网络的区别在于相邻两层的连接方式,卷积神经网络为局部连接,传统神经网络为全连接。卷积层涉及的参数个数为(3*3*3+1)*2=56;如果为传统神经网络,输入层元素个数为147,输出层元素个数为18,采用全连接,参数个数为(147+1)*18=2664。
2、池化层POOL
对卷积层提取的图像数据进行向下采样,以降低特征图的维度,从而减少参数个数以及缩短处理时间。
过滤器: