(深度学习)卷积神经网络(CNN)

4 篇文章 0 订阅
1 篇文章 0 订阅

一、卷积神经网络和传统多层神经网络区别
1.传统多层神经网络区别:没有理论指出多少层(层数没有作用)
2.卷积网络:更加有效的特征学习部分,加深网络得以有效
3.深度学习:卷积神经网络、循环神经网络,新的结构以及一些新的方法(比如新的激活函数Relu等)
卷积神经网络主要应用于图像识别,还可以图像目标检测,常用模型如下:
Yolo:GoogleNet+ bounding boxes
SSD:VGG + region proposals
二、卷积神经网络的原理
在这里插入图片描述
卷积网络的三个结构:
神经网络(neural networks)的基本组成包括输入层、隐藏层、输出层。而卷积神经网络的特点在于隐藏层分为卷积层和池化层(pooling layer,又叫下采样层)以及激活层。每一层的作用

卷积层:通过在原始图像上平移来提取特征
激活层:增加非线性分割能力
池化层:通过特征后稀疏参数来减少学习的参数,降低网络的复杂度,(最大池化和平均池化)

如果是分类任务,还会加上一个全连接层(FC)也就是最后的输出层,进行损失计算分类,如果不是分类任务就不需要加。
三、卷积层:
特点:提取特征的功能更加强大
卷积层(Convolutional layer),卷积神经网络中每层卷积层由若干卷积单元(卷积核)组成。
蓝色窗口为一个卷积核
在这里插入图片描述
1,卷积核的四大要素:
卷积核(Filter)的四大要素
(1)卷积核个数
(2)卷积核大小(观察窗口的大小):一般采用11、33、55(这些大小是经过研究人员证明比较好的效果)会进行特征加权运算(权重和偏置)
(3)卷积核步长(根据步长移动把整张图片观察完整),通常步长采用一个像素(采用一个像素的原因防止步长过大会过滤一些特征,步长越大观察就越粗糙)
(4)卷积核零填充大小:零填充就是在图片像素外围填充一圈值为0的像素
在这里插入图片描述
1)为什么进行零填充?
(1)因为设定的卷积核根据步长移动可能会损失图片的像素信息(可能没观察到),所以外围添加一圈值为0的像素使得大于图像,这样就避免了像素信息的损失。(2)采用0的原因是卷积核需要加权运算结果都是0(0
任何数=0),这样不会影响像素的运算结果
2)有两种方式,SAME和VALID
SAME:越过边缘取样,取样的面积和输入图像的像素宽度一致。
VALID:不越过边缘取样,取样的面积小于输入人的图像的像素宽度。
在Tensorflow当中,卷积API设置”SAME”之后,输出高宽与输入大小一样(重要)

2.卷积核的特点:卷积核将整张图片观察完整,得出结果
卷积核是如何去观察的?
在这里插入图片描述
如下图可观察到:每个卷积核(观察者)得出的结论大小,多个卷积核(组成一层卷积),如果个n个卷积核得出n个结论,同一层不同的卷积核大小一致(比如是33,则一层都是33),移动步长(例如都是2个像素)一致,但是带的权重和偏置随机
每个观察者得出的结论大小跟卷积核大小和步长大小有关系
假如5个卷积核去观察得到2*2,则[5,2,2]
在这里插入图片描述
在这里插入图片描述
3、计算输出大小
在这里插入图片描述
如上图可知零填充大小
1)指定好的零填充大小
2)根据结论大小,在根据卷积运算公式求出P的大小即上图的第二种情况
4.对于彩色图片(三通道),每个人去观察时,需要3张权重表,最后得出一张表结论
在这里插入图片描述
5.卷积网络API

tf.nn.conv2d(input, filter, strides=, padding=, name=None)
计算给定4-D input和filter张量的2维卷积
input:给定的输入张量,具有[batch,heigth,width,channel],类型为float32,64
filter:指定过滤器的权重数量,[filter_height, filter_width, in_channels, out_channels]
strides:strides = [1, stride, stride, 1],步长
padding(零填充,不需要我们计算):“SAME,VALID”,使用的填充算法的类型,使用“SAME”。其中”VALID”表示滑动超出部分舍弃,“SAME”表示填充,使得变化后height,width一样大

四、激活函数:增加非线性的分割能力
1.ReLU函数公式
在这里插入图片描述
2.为什么采用ReLU的函数
有效解决梯度爆炸的问题,计算速度非常快(之所以计算快,因为relu函数公式的原因)
而之前的sigmoid函数的缺点:计算量相对大(公式/(1/(1+e^-z))复杂),sigmoid函数反向传播时,很容易就会出现梯度爆炸现象
3.激活函数API
tf.nn.relu(features, name=None)
features:卷积后加上偏置的结果
return:结果
五、池化层(Polling):特征选择的作用,减少像素特征的数量,减少运算量
Pooling层主要的作用是特征提取,通过去掉Feature Map中不重要的样本,进一步减少参数数量。解决过拟合的问题。Pooling的方法很多,通常采用最大池化

max_polling:取池化窗口的最大值
avg_polling:取池化窗口的平均值

最大池化如下图
在这里插入图片描述
1.池化层计算公式和卷积层一样(池化层一般采用2*2大小窗口,步长为2)
在这里插入图片描述
2.池化层API

tf.nn.max_pool(value, ksize=, strides=, padding=,name=None)
输入上执行最大池数
value:4-D Tensor形状[batch, height, width, channels] 
channel:并不是原始图片的通道数,而是多少filter观察 例如50个人观察,则channels=50
ksize:池化窗口大小,[1, ksize, ksize, 1]
strides:步长大小,[1,strides,strides,1]
padding:SAME,VALID”,使用的填充算法的类型,默认使用“SAME

六、Full Connection层(如果处理分类问题)
前面的卷积和池化相当于做特征工程,最后的全连接层在整个卷积神经网络中起到“分类器”的作用。

7.卷积神经网络的过程:
在这里插入图片描述

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值