卷积神经网络

一.层次结构

1.数据输入层 input layer

有三种常见的图像数据处理方式

(1)去均值:就是把所有数据相加然后求均值,再把每个数减去均值,再放入矩阵中实现去均值。

(2)归一化:输入进来的数值最好规定在一个范围内(比如0-1,-1-1)。

(3)PCA/白化:PCA降维,把高维的数据尽量把重要信息的部分保留下来;白化:幅度归一化

2.卷积计算层 conv layer

(1)局部关联。图片的每个像素点都与周围的像素有关系,所以就用卷积核(比如3*3)的来对图片上的所有数据进行遍历。每个卷积核相当于一个filter

(2)窗口(receptIve field)滑动,filter对局部数据计算。往右滑动,然后往下滑动,直到从左上角滑动到右下角算完成了依次遍历。

  ❤每当一个3*3的卷积核把整张图片遍历完,算完成了一次遍历。这只是第一个神经元所完成的工作,在整个工作过程中卷积核里面的9个数值让他固定不改变,也就是相当于这九个像素点连接的9个权重w在一个神经元工作的过程中是不改变的。(也就是当前的一个神经元有9个权重w,可是说是权值共享了),在第二个神经元开始还会做相同的事情,只是神经元的里面的权重改变了,是另外9个权重了。这样一来,每一个神经元都有自己关注的地方,比如说一个关注的是颜色,一个关注的是文理,一个关注的是纹理等等。然后把信息再进行汇总。(每个神经元只关注一个特性)

(3)深度 depth   下一层神经元的个数,比如说是5,意思是用5个神经元从5个维度分别来观测原始图像。

	 步长 stride    滑动步长
	 stride越大得到的特征图越小。
	 stride=1的时候虽然得到更多的特征但就是效率太低了。

	填充值 zero-padding  在原始数据上为了保证滑窗能从头滑到尾在周边填充上若干0
	pad = 1:在周围加上一圈0
	pad=2:在周围加上两圈0
	等等
❤❤**怎么样由输入推出输出:
	输入=7x 7(h1xw1)
	Filter=3 x 3
	pad = 1
	stride =1
	Output = ?(h2 x w2)
	h2 = (h1-f+2p)/s+1=(7-3+2)/1+1=7
	w2=(w1-f+2p)/s+1=(7-3+2)/1+7=7**
	
	
	

    (4)三通道(RGB)图像卷积过程

在这里插入图片描述

	♣   7x7x3   意思是图片大小为7x7;3的意思是深度,为rgb三通道图像也就是彩色图像,既然是三通道图像卷积核就要分别对每个通道进行卷积,最后把卷积后的三通道结果进行相加。原始图像的深度是几,那么我们的过滤器的深度也就要是几,来用第一个卷积核来计算filter w0:

第一通道:w0[:,:,0]: 0x0+0x0+0x-1 + 0x1+1x0+2x0 + 0x0+1x0+0x1 = 0

第二通道:w0[:,:,1]: 0x0+0x1+0x-1 + 0x-1+0x1+2x-1 + 0x0+2x-1+2x0 =-4

第三通道:w0[:,:,1]:0x0+0x1+0x-1 + 0x1+0x-1+1x0 + 0x0+2x0+0x-1 = 0

将三通道相加:0+(-4)+0+1=-3 (就成为特征图中绿框中的-3了) 1为偏置值biases
最后输出层:有几个过滤器(神经元)那么输出层的深度就是几。

3.RELU激励层 RELU layer

(1)需要知道用什么样的幅度往下传,所以对卷积层输出的结果做非线性映射。

(2)Sigmoid   S型函数0-1之间   如果sigmoid做激活函数是有缺陷的:当数值很大或者很小的时候,斜率就趋向0了

	Tanh()	   双曲正切函数

	RELU          修正线性单元     收敛快,求梯度简单,较脆弱        y=0和y=x两段

	Leaky RELU        y=x和y=ax(a为很小很小的数)

	ELU		    指数线性单元

	Maxout 	    计算是线性的,不会饱和也不会挂

	❤实际经验:

	不要用sigmoid,首先试用RELU,因为快,但要小心点,如果RELU失败,就用Leaky RELU或者Maxout 某些情况下tanh倒是有不错的结果,但是少。

4.池化层 pooling layer

	夹在连续的卷积层中间
	没有权重的

	功能:压缩数据和参数的量,减少过拟合 ,对数据做下采样

	方式:max-pooling和average-pooling

5.全连接层 FC layer

	两层之间所有的神经元都有权重连接

	通常全连接层在卷积神经网络的尾部

6.一般CNN结构

	INPUT

	[[CONV -->RELU]*N-->POOL?]xM      有没有pool取决于数据量的大小

	[FC-->RELU]xK

	FC

7.优缺点

	优点:

	共享卷积核,对高维数据的处理无压力

	无需手动选取特征,训练好权重,即得特征

	分类效果好

	缺点:

	需要调参,需要大样本量,训练最好要用GPU

	物理含义不明确

8.典型CNN

	LeNet    这是最早用于数字是别的CNN

	AlexNet  2012年ImageNet数据集上的比赛远超第二名的CNN,比LeNet更深,用多层小卷积层叠加替换大卷积层。

	ZF Net  2013年ILSVRC比赛冠军

	GoogLeNet  2014  ILSVRC比赛冠军

	VGGNet     2014年ILSVRC比赛中的模型,图像识别略差与GoodNet ,但是在很多图像转化学习问题(比如object detection)上效果奇好。

	ResNet		2015年 ILSVRC比赛的冠军,微软打造,层次极深(152层)

9.fine-tuning

	什么是fine-tuning?

	使用已用于其他目标,预训练好的模型的权重或者部分权重,作为初始值开始训练。

	原因:

	自己从头训练卷积神经网络容易出问题

	fine-tuning能很快收敛到一个较理想的状态

	做法:

	复用相同层的权重,新定义层取随机权重初始值

	调大新定义层的学习率,调用复用层的学习率

10.模型下载

	搜索coffe——>model zone

	Caffe

	Mxnet:         chentianqi团队主导的package,对显存利用率非常高,定义网络层简单。

	tensorflow:Google的深度学习框架;tensorboard可视化很方便,实时监控;数据和模型并行化好速度快。

11.实验条件

	最好用AVIDIA  Tegra  X1   
	GPU的运算速度比CPU快很多
	显卡:TitanX:8000元左右   老产品  显存大12G
				1080:5000元左右    新产品  显存8G
	显存:当训练网络的时候输入的数据,还有训练模型的时候也有一些缓存的参数都需要占内存,显存越大一次输进来的数据也比较大,迭代的batch也比较大,训练的比较好。

12.卷积神经网络的反向传播

(1)在这里插入图片描述
❤x 一般是4维的,[batch,channel,height,width]
w 也是4维的,[batch,channel,height,width] x是三通道的那么w(filter )也是三通道的,也就是深度是一样的。如果有64个卷积核那么生成的特征图是64维的,接下来的再进行卷积的卷积核的深度就是64了。
生成的特征图out的深度取决于有多少个神经元,也就是filter。同样也是4维的。
在这里插入图片描述
dout[0,0,1]是第一个小方块,以此类推,0是第一个图片,0是第一个通道,1是特征图里的第一个小方格。
在这里插入图片描述
dw = dout x X 求dw:把图片上的每一个3乘3的小方格都计算一遍。
❤pooling层的反向传播(没有权重)
在这里插入图片描述
只在最大的值的地方上写上最大值,其他地方填0.

13.经典的卷积神经网络模型

	Alexnet:
	VGG:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值