tensorflow(11)CNN

一、CNN的引入:

1.1 传统神经网络(人工全连接网络)存在的问题(当处理图片问题):

1.)权值太多,计算量太大

2.)权值太多,需要大量的样本进行训练

经验之谈:样本数据量大小是未知参数(权值)的5~30倍。

如:输入一张黑白28*28图片,假设隐层是15个神经元,则参数:784*15=11760个。 如果输入是彩色的,则参数是:3  *784 *15个。输入格式:一维向量。

二、CNN(Convolutional Neural Network)结构:

2.1. 网络实例图:

2.2. 知识图谱:

2.3. 网络层次:

● 输入层:用于数据的输入

● 卷积层:使用卷积核进行特征提取和特征映射

● 激励层:由于卷积也是一种线性运算,因此需要增加非线性映射

● 池化层:进行下采样,对特征图稀疏处理,减少数据运算量。

● 全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失

● 输出层:用于输出结果

当然中间还可以使用一些其他的功能层:

● 归一化层(Batch Normalization):在CNN中对特征的归一化

● 切分层:对某些(图片)数据的进行分区域的单独学习

● 融合层:对独立进行特征学习的分支进行融合

2.4. 模块分析:

  • 输入层:全连接输入的是一维向量,CNN保留了图片本身的结构。黑白28 *28,输入是28*28的二维神经元。

RGB时输入:

  • 卷积层:

理解:卷积层的神经元是只与前一层的部分神经元节点相连,每一条相连的线对应一个权重 w 。

Padding:SAME PADDING和VALID PADDING

作用:使得原信号特征增强,并降低噪音(如,用增强边缘的卷积去处理图像,处理后,边缘特征增强);

局部感知*参数共享*多核*下采样*多层卷积(层数多,提取的特征越全局化);

(1.)局部感受野和权值共享:局部?(特征的局部):颜色局部,文理局部,形状局部 

假设输入的是一个 28×28 的的二维神经元,我们定义5×5 的 一个 local receptive fields(感受视野),即 隐藏层的神经元与输入层的5×5个神经元相连,这个5*5的区域就称之为Local Receptive Fields。

作用:减少了神经网络需训练参数的个数

定义:一个点用其周围的点像素值加权平均代替

意义:加权叠加

作用: 消除噪声,特征增强

实用:平滑

注意:滤波(尺寸不变)和卷积的区别

(2.)Feature Map

定义: 一张图(矩阵)经过卷积核(kernal)卷积运算之后得到的一张新的图(矩阵)。
角度:(同一层)一张图片多种角度的描述。
具体: 用多种不同的卷积核对图像进行卷积Filteri,得到不同核上的响应,作为图像的特征。
下层核:主要是一些简单的边缘检测器(simple cell);
上层核:主要是一些简单核的叠加(complex cell)
如:
同一层:
Fliter1 的w1,b1 运算后提取的是 形状边缘的特征: feature map1
Fliter2 的w2,b2 运算后提取的是 颜色深浅的特征: feature map2
下一层:
Fliter3 的w3,b3 运算后提取的是 直线形状的特征: feature map3 
Fliter4 的w4,b4 运算后提取的是 弧线形状的特征: feature map4 
Fliter5 的w5,b5 运算后提取的是 红色深浅的特征: feature map5
Fliter6 的w6,b6 运算后提取的是 绿色深浅的特征: feature map6

  • 池化层:

Padding:SAME PADDING和VALID PADDING

方式:mean-pooling和max-pooling

作用:降维,还能改善过拟合

卷积和池化都是特征提取

  • (端到端)步骤

原始图(input 图)—>卷积和池化输出的是Feature Map—>光栅化—>多层感知机预测(全连接,分类器)—>output

光栅化目的:光栅化后得到的是一个一维的向量为了与传统的多层感知机全连接,最后一个池化层S(完成对原始数据的特征提取)后—>S层的特征数据向量化,连接到相应的分类器。分类器如:SoftMax、BP网络、SVM、等

2.5 训练:

定义:参数调优能识别特定的特征,这个过程叫做训练;

不需要人为的修改:卷积核初始化是随机的,是一个自学习的过程,向最优发展;

需要人为的修改:卷积核的个数,步长等;

训练开始,卷积层的滤波器是完全随机,不会对任何特征激活(不能检测任何特征)。所以,反馈修改参数等,达到CNN最优化的检测特定模式。如定义损失函数L,让L反馈给整个网络,修改参数,让Loss最小(使得L变化收敛“碗”)。在训练CNN时,实际上是在训练一系列滤波器这些滤波器对特定模式有高的激活,以达到CNN分类/检测的目的。   


 

猜你喜欢

转载自blog.csdn.net/zhaoshuling1109/article/details/81508016