深度学习二、CNN(卷积神经网络)概念及理论
一、卷积神经网络(CNN)
1、常见的CNN结构有:LeNet-5、AlexNet、ZFNet、VGGNet、ResNet等。目前效率最高的是ResNet。
2、主要的层次:
数据输入层:Input Layer
卷积计算层:CONV Layer
ReLU激励层:ReLU Incentive Layer(功能就是和激活函数一样,具有非线性的能力)
池化层:Pooling Layer(压缩形式,降低复杂度)
全联接层: FC Layer
备注 :Batch Normalization Layer
3、详解Input Layer
和传统的神经网络一样,首先需要对输入的数据进行预处理。
(1) 去均值:将输入数据的各个维度中心化到0,例如X1(1,2,5),那么平均值就是(1+2+5)/3 = 8/3,在用每一个元素减去8/3。
(2)归一化:将数据各个维度的幅度归一到同样的范围。(在去均值的基础上,再除以标准差)
(3)PCA/白化:(在cnn处理图片不用这个)
用PCA降维(去掉特征与特征之间的相关性)
白化石在PCA的基础上,对转换后的数据每个特征轴上的幅度进行归一化
例:(去均值和归一化)
例:PCA和白化
、
4、CONV Layer(卷积)
- 局部关联:每个神经元看做一个filter/kernal
- 窗口(receptive field)滑动,filter对局部数据进行计算
- 相关概念(深度:depth,步长:stride,填充值:zero-padding)
理解这张图
(1)可以把每一张图片分割成很多个神经元,如图最左边
(2) 每一个图片可用RGB(红、绿、蓝三个通道的颜色)三个方面来表示。
(3)filter可以看作是从几个角度来描述这个图片(比如说大小,形状),有几个角度,深度就是多少,那么每一个角度,就对应一组filter。
(4)如上图:一般的图片为正方形,步长s=2,窗口大小f=3,高度h=5,宽度w=5,填充p=1*2,满足(p+w-f+s)/s 能够被整除,输出为out输出矩阵的大小
卷积神经网络就是解决了全链接神经网络复杂度,进行局部感知,如 下图:
5、ReLU Layer(激活)
一班用ReLU,如果效果不好,可用Leak Relu
6、池化层 Pooling Layer
在连续的卷积层中间存在的就是池化层,主要功能是:通过逐步减小表征的空间尺寸来减小参数量和网络中的计算;池化层在每个特征图上独立操作。使用池化层可以压缩数据和参数的量,减小过拟合。
类似传统神经网络中的结构,FC层中的神经元连接着之前层次的所有激活输出; 换一句话来讲的话,就是两层之间所有神经元都有权重连接;通常情况下,在 CNN中,FC层只会在尾部出现
一般的CNN结构依次为:
INPUT
[[CONV -> RELU] * N -> POOL?]*M
[FC -> RELU] * K
[FC -> RELU] * K
FC
7、 初始化参数(在卷积神经网络中,可以看到神经元之间的连接是通过权重w以及偏置b实现的。在具 体的神经网络之前 ,需要初始化参数)
权重的初始化 :
一般方式:很小的随机数(对于多层深度神经网络,太小的值会导致回传的梯度非常小),一般随机 数是服从均值为0,方差未知(建议:2/n, n为权重数量,https://arxiv.org/pdf/1502.01852.pdf) 的高斯分布随机数列。
偏置项的初始化 :
一般直接设置为0,在存在ReLU激活函数的网络中,也可以考虑设置为一个很小的数字
8、卷积神经网络正则化和Dropout
神经网络的学习能力受神经元数目以及神经网络层次的影响,神经元数目越大, 神经网络层次越高,那么神经网络的学习能力越强,那么就有可能出现过拟合的问题 。
Regularization:正则化,通过降低模型的复杂度,通过在cost函数上添加 一个正则项的方式来降低overfitting,主要有L1和L2两种方式
Dropout:通过随机删除神经网络中的神经元来解决overfitting问题,在每次迭代的时候,只使用部分神经元训练模型获取W和d的值(
每次丢掉一半左右的隐 藏层神经元,相当于在不同的神经网络上进行训练,这样就减少了神经元之间的依 赖性,即每个神经元不能依赖于某几个其它的神经元(指层与层之间相连接的神经 元),使神经网络更加能学习到与其它神经元之间的更加健壮robust(鲁棒性)的 特征。另外Dropout不仅减少overfitting,还能提高准确率 )
9、卷积神经网络训练的方法
在神经网络中一般采用Mini-batch SGD,主要包括以下四个步骤的循环:
(1)采样一个batch的数据
(2)前向计算损失loss
(3)反向传播计算梯度(一个batch上所有样本的梯度和)
(4)利用梯度更新权重参数
深度学习二、CNN(卷积神经网络)概念及理论的更多相关文章
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...
- 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)
一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...
- SIGAI深度学习第九集 卷积神经网络3
讲授卷积神经网络面临的挑战包括梯度消失.退化问题,和改进方法包括卷积层.池化层的改进.激活函数.损失函数.网络结构的改 进.残差网络.全卷机网络.多尺度融合.批量归一化等 大纲: 面临的挑战梯度消失问 ...
- Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
- CNN学习笔记:卷积神经网络
CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...
- 深度学习面试题10:二维卷积(Full卷积、Same卷积、Valid卷积、带深度的二维卷积)
目录 二维Full卷积 二维Same卷积 二维Valid卷积 三种卷积类型的关系 具备深度的二维卷积 具备深度的张量与多个卷积核的卷积 参考资料 二维卷积的原理和一维卷积类似,也有full卷积.sam ...
- day-16 CNN卷积神经网络算法之Max pooling池化操作学习
利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...
- Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时
Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时 在论文中,Capsule被Hinton大神定义为这样一组神经元:其活动向量所表示的是特定实体类型 ...
随机推荐
- Github 快速建库上传本地代码
1 github.com网页端先建好一个空库 2 本地对这个库进行 git clone 3 向本地库中添加已完成文件 4 运行如下命令 git add . (注:别忘记后面的.,此操作是把Test文件 ...
- layui+ztree 树状下拉框
一.效果图 [关闭] [展开] 二.代码 [HTML]注:布局一定要用DIV不是select否则效果···· <div class="layui-form-item"> ...
- qt生成二维码
到官网下载qrencode http://fukuchi.org/works/qrencode/index.html.en qrenc.c不用,这个是测试用的,把config.h.in文件改为conf ...
- Mac10.12下Python3.4调用oracle
最近,由于项目的短信平台对其它浏览器兼容,只支持IE,但是我们移动端自动化需要测试iphone手机,必须要连接MAC系统下,众所周知,MAC对IE的不友好性,故没办法通过短信平台在UI层自动化获取短信 ...
- dbgrideh 哪些行被选中了
在dbgrideh中允许选择多行,如何知道哪些行被选中是个BOOKMARK类型的属性.SelectedRows: TBookmarkListprocedure TForm1.Button1Click( ...
- Linux(CentOS7)压缩和解压缩war包、tar包、tar.gz包命令
一.Linux版本 二.解压缩.tar.gz包到当前目录 tar -xzvf apache-tomcat-7.0.90.tar.gz 三.将指定文件压缩成.tar.gz包 tar -czf apach ...
- scala的多种集合的使用(8)之队列和栈的操作方法
1.使用队列 队列是一种那个先进先出的队列.1)创建一个队列. scala> import scala.collection.mutable.Queue import scala.collect ...
- VSCode python 遇到的问题:vscode can't open file '<unprintable file name>': [Errno 2] No such file or directory
代码很简单,就两行: import pandas as pd import netCDF4 as nc dataset = nc.Dataset('20150101.nc') 环境:在VSCode中左 ...
- mac系统下安装jdk并配置环境变量
1.点击如下链接进入下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- dpdk-18.11开发库编译安装
简介 dpdk官网 安装 下载 点击下载地址,选择合适的版本下载.这里下载DPDK 18.11.0 (LTS)版本. 编译 将下载的dpdk-18.11.tar.xz上传服务器,解压,这里放在了/op ...